【K8s】整体认识K8s之K8s的控制器
作用:
控制器的作用就是持续监控k8s集群的状态,让它处于我们期望的状态,常见的控制器有replicaset、deployment、daemonset、statefulset 、job 、cronjob
Replicaset
控制一组pod的副本数,始终与预设的值相同,会持续监视这些pod的状态,在pod发生故障的时候重启,但是k8s官方现在推荐使用deployment因为它提供了更高级的滚动更新和回退功能。
Deployment
创建deployment会自动创建一个replicate ,可以进行升级,也可以回滚到较早的deployment版本,还可以扩大deployment的规模,其实它的本质还是replicate,但是它提供了更高级的功能。
Daemonset
它能确保集群上的所有节点都运行一个pod副本,当新节点加入的时候,它会在这个节点上增加这个pod副本。当这个节点被删除时,pod也会回收。常见的deamonset有日志守护进程,监控守护进程,集群守护进程等,Calico组件,就是通过daemonset部署在每一个节点上。
Statefulset
无状态应用使用ployment管理,有状态应用statefulset管理。想象一下无状态应用就像酒店的客人,一个客人走了,下一个客人来仍然可以入这个房间,但是有状态的应用就像酒店的长期住客,他有一个专属的固定的房间。Statefulset,它给每一个pod一个固定的名字,它管理的pod的名字是有顺序,并且非常稳定的,并且每一个pod它都有自己独立的存储空间,这样的话当pod被删除或重启,重新启动,还是使用之前的网络标识和存储空间,保证了数据不会丢失,并且数据的归属是正确的。
总结一下,statefulset就是给一个pod一个稳定的网络标识和稳定的持久化存储,那么什么时候需要用statefulset呢?就是比如数据库,比如mysql、 redis、 mongo db他们的数据非常重要,不能混乱。再比如消息队列,必须按顺序处理。以及任何的需要独享存储和具有固定身份的应用。
Job和CronJob
Job一次性任务
CronJob周期性任务