25 | 深入解析声明式API(二):编写自定义控制器
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入解析了声明式API中编写自定义控制器的过程。作者首先介绍了自定义控制器的主要工作,即监视API对象的变化并决定实际执行的工作。随后,通过代码示例详细解释了自定义控制器的初始化和工作原理。文章重点介绍了Informer的作用,它是一个带有本地缓存和索引机制的、可以注册EventHandler的client,负责与APIServer进行数据同步。作者还解释了Informer的ListAndWatch方法和定时resync操作的工作原理。最后,文章介绍了控制循环的启动逻辑,即等待Informer完成本地缓存的数据同步操作后,通过goroutine启动控制循环。整体而言,本文通过深入的技术解析,帮助读者了解了声明式API中编写自定义控制器的工作原理和实现过程。文章通过代码示例和详细解释,使读者能够清晰地理解自定义控制器的业务逻辑和实际操作过程。文章还提到了与Neutron相关的业务代码,虽然并非重点,但为读者提供了进一步探索的可能性。文章内容丰富,涵盖了Informer、控制循环、工作队列等核心概念,为读者提供了深入理解Kubernetes API编程范式的机会。
《深入剖析 Kubernetes》,新⼈⾸单¥68
全部留言(56)
- 最新
- 精选
- mgxianInformer 和控制循环分开是为了解耦,防止控制循环执行过慢把Informer 拖死
作者回复: 是的
2018-10-193104 - Joe Black看了这两天的文章,感觉k8s的机制实在是太具有普适性了,可以基于它构建各种分布式业务平台。本质上它就是一个分布式对象管理平台。
作者回复: 说对了。所以说把kubernetes跟swarm mesos各种paas等横向比较没啥实际意义
2018-10-19346 - 超如果一个master 管理的node非常多 通过ListAndWatch 会对master的性能有影响吧
作者回复: 所以说kubernetes 当前规模是5000
2018-11-08333 - 勤劳的小胖子-libo一般这种工作队列结构主要是为了匹配双方速度不一致,也为了decouple双方。比如典型生产者消费者问题
作者回复: 对的
2018-12-1517 - gogo请问老师,如果用deployment部署一个tag是latest的镜像,怎样进行滚动更新呢?set image的话tag不变,不能出发更新呢
作者回复: 要用滚动更新就不要用latest tag,否则你准备怎么知道当前在用的是哪个版本的镜像?
2018-10-19211 - jssfy请问这个控制器是跑在node节点上的?一般哪些控制器是跑在node上哪些是跑在master上呢
作者回复: 无所谓,哪都行
2018-11-255 - Monokai处理完api对象的事件后就直接存储在etcd里了么?需不需要再和apiserver打交道?
作者回复: 需要,所有对etcd的操作都要走apiserver
2019-08-184 - xfan我在读完后,和学习的期间,发现不仅仅CRD有Informer,workqueue构成的自定义控制器,而且client-go中也有个类似的,这两者之间有什么联系吗,还是就是一个东西
作者回复: 一个东西
2019-01-174 - LinYongRui张老师您好,请问如果在这个框架下,有人手动删除了一个实际的neutron network,但是本地缓存和apiserver的状态是一致的,那么在period sync的时候,是不是就不会去真正检查实际状态和本地缓存的差别了呢?因为我看到eventhandler的update那边会直接return了? 谢谢
作者回复: 这个逻辑可以自己在handler里处理一下,我没cover这种情况而已
2018-11-104 - runner张老师,问个问题,我们公司的docker业务,容器总数上万个,部分容器依赖宿主机配置文件。现在我们想迁k8s 的话,能不改动这些容器,把他们加入pod管理起来么?如果上万容器都重新调度生成的话,这个改动太大了。
作者回复: 给它们写yaml描述起来吧。
2018-10-194