K8S - deployment 控制器

k8s的master节点上会有kube-controler-manager这个组件,顾名思义,这个组件就是用来管理所有的controler的。

控制器模式的思想就是用一个对象来管理另外一个对象。

可以通过如下方式查看所有的controler:

$ cd kubernetes/pkg/controller/

$ ls -d */             


今天要讲的deployment就是最常见的一种controler。

注意:deployment控制器管理的是ReplicaSet,而不是pod。

所有的控制器都遵循了如下所示的控制循环( control loop )模式。 控制循环模式和事件驱动模式的区别: 事件驱动是基于一次性的事件触发之后进行处理,如果处理失败了则不好重试; 控制循环模式是主动的,循环的进行重复的处理,不停的重试,一直达到最终的一致性。

ReplicaSet: 

ReplicaSet是K8S中特别重要的一个api对象。 Deployment中ReplicaSet和pod的关系如下: 

ReplicaSet通过“控制器模式”保证当前的pod的个数永远等于配置文件中配置的个数。 


Deployment,ReplicaSet和Pod之间的关系图

Deployment通过“控制器模式”来控制ReplicaSet的数量和属性,从而达到了ReplicaSet的水平扩展/收缩 和 滚动更新的功能。 举例: Deployment要实现水平扩展功能,Deployment Controler只需要修改他控制的ReplicaSet的数量就可以了。 也可以通过指令($ kubectl scale deployment nginx-deployment --replicas=4)来实现。 

Deployment实现滚动更新的原理是,创建一个新的ReplicaSet,然后滚动的在这个新的RepicaSet中创建新的pod,同时移除旧的ReplicaSet中的pod,还可以通过RollingUpdateStrategy策略来配置滚动更新过程中,最大不可用的pod个数等属性。 

如上图所示,Deployment真正控制的是ReplicaSet的数量和属性,这样Deployment对应的多个ReplicaSet其实就是对应的应用的过个版本。 应用版本和 ReplicaSet是 一一对应的。 


Deployment Controler还会保证在任何时间,只要有pod出现了问题,它会自动创建出来一个新的pod。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 十岁玄鸟/文 今天是大年初一,我在想,春节是什么? 春节是什么?春节是老家门前的红春联。一副副春联像迎客礼花一样立...
    小玄鸟阅读 296评论 0 3
  • 据说这世上只有一种成功,叫:“用自己喜欢的方式过一生”。闺蜜的公司有位很励志的惠子姐姐,我最近刚听来的故事。200...
    HackerOnce阅读 268评论 0 2
  • 一个香荷包, 藏着甜甜的秘密, 一个蝴蝶结, 系着相依相偎的那个夜。 约定一个思念的渡口, 让两颗蹦跳的心, 在那...
    秋塬之晖阅读 581评论 6 15
  • 老师:“你们要记得男女有别,所以不要和男孩子搂搂抱抱亲脸哈。” 其中一女生不屑地说“那长大了谈恋爱干嘛又抱一起,那...
    漫漫无忧阅读 294评论 4 5

友情链接更多精彩内容