16 | 编排其实很简单:谈谈“控制器”模型
张磊
该思维导图由 AI 生成,仅供参考
你好,我是张磊。今天我和你分享的主题是:编排其实很简单之谈谈“控制器”模型。
在上一篇文章中,我和你详细介绍了 Pod 的用法,讲解了 Pod 这个 API 对象的各个字段。而接下来,我们就一起来看看“编排”这个 Kubernetes 项目最核心的功能吧。
实际上,你可能已经有所感悟:Pod 这个看似复杂的 API 对象,实际上就是对容器的进一步抽象和封装而已。
说得更形象些,“容器”镜像虽然好用,但是容器这样一个“沙盒”的概念,对于描述应用来说,还是太过简单了。这就好比,集装箱固然好用,但是如果它四面都光秃秃的,吊车还怎么把这个集装箱吊起来并摆放好呢?
所以,Pod 对象,其实就是容器的升级版。它对容器进行了组合,添加了更多的属性和字段。这就好比给集装箱四面安装了吊环,使得 Kubernetes 这架“吊车”,可以更轻松地操作它。
而 Kubernetes 操作这些“集装箱”的逻辑,都由控制器(Controller)完成。在前面的第 12 篇文章《牛刀小试:我的第一个容器化应用》中,我们曾经使用过 Deployment 这个最基本的控制器对象。
现在,我们一起来回顾一下这个名叫 nginx-deployment 的例子:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Kubernetes容器编排中的“控制器”模型是本文的核心内容。文章以Deployment为例,详细介绍了控制器模式的设计方法,统一实现对各种不同的对象或资源的编排操作。控制器模式通过控制循环完成编排逻辑,最终执行结果要么是创建、更新一些Pod或其他API对象,要么是删除已存在的Pod或其他API对象。这一实现思路是Kubernetes容器编排的核心原理,不同的控制器可以在具体执行过程中设计不同的业务逻辑,从而达到不同的编排效果。文章还提出了思考题,探讨了Kubernetes使用的“控制器模式”与常说的“事件驱动”之间的区别和联系。整体而言,本文通过深入浅出的方式,向读者介绍了Kubernetes容器编排中的核心技术特点,为读者提供了全面的概览。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》,新⼈⾸单¥68
《深入剖析 Kubernetes》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(40)
- 最新
- 精选
- jasine除了上面朋友提到的主动与被动区别,事件往往是一次性的,如果操作失败比较难处理,但是控制器是循环一直在尝试的,更符合kubernetes申明式API,最终达到与申明一致,这样理解对吗
作者回复: 厉害。这个就说到点子上了。
2018-09-286463 - uncleli相当于select和epoll的区别
作者回复: 太专业啦
2018-09-286129 - 小小笑儿deployment会创建rs,然后由rs创建pod,所以pod的owner应该是rs?
作者回复: 明白人。
2018-09-28392 - 龙坤老师,大概可以这样理解吧。一个是主动,一个被动 “事件驱动”,对于控制器来说是被动,只要触发事件则执行,对执行后不负责,无论成功与否,没有对一次操作的后续进行“监控” “控制器模式”,对于控制器来说是主动的,自身在不断地获取信息,起到事后“监控”作用,知道同步完成,实际状态与期望状态一致
作者回复: 基本正确。
2018-09-28240 - Pixar有一个疑问没太弄清楚, 比如Deployment, 是我创建一个Deployment 就会生成一个对应的 Deployment-Controller 实例来管理该它 还是整个k8s系统只有一个 Deployement-Controller 来同一管理该系统的所有Deployment呢?
作者回复: 当然只有一个controller
2018-10-0730 - 包子控制器主动获取pod状态,在这个集群中,有那么多pod,某个pod在某一时刻状态有变,怎样及时通知到控制器呢?
作者回复: informer机制,后面会讲到
2018-09-2824 - chf007我可以先写Pod,再写Deployment,不写 template,只靠标签控制 Pod 么? K8s只靠标签进行match控制,如果万一写错便签会不会直接调度了以前就存在的Pod,但是 不是我想要操作的 Pod 呢?
作者回复: 不可以,控制器需要使用模版。的确会有重合的可能。
2018-10-10517 - Vincen后面文章会讲watch机制吗?
作者回复: 会的
2018-09-285 - Spark老师,我是初学者,这个课程让我获益匪浅,但每次都有很多问题想问但无人解答。请问能不能建一个交流群,大家共同讨论学习。
作者回复: 极客时间好像马上要上线这个功能
2018-09-2953 - 择动老师,明白人说明白之后,我想明白deployment的owner又是谁?
作者回复: 这个字段可以为nil啊
2018-09-282
收起评论