33|kube-controller-mananger框架核心原理及源码剖析
孔令飞

你好,我是孔令飞。
Kubernetes 的基石是声明式编程,模式如下:

开发者通过调用 kube-apiserver 向 etcd 中添加 / 修改 / 删除资源,kube-apiserver 会保存资源的定义,资源定义中会声明资源期望的状态。kube-controller-mananger 通过 List-Watch 机制感知到 kube-apiserver 中资源的变更,会根据资源的定义进行(期望的状态)调谐。所谓的调谐,就是运行程序将资源的状态维持在期望的状态。
课程的前半部分,我详细介绍了 kube-apiserver 中的核心内容。接下来将介绍声明式编程中另外一个核心角色:控制器 kube-controller-manager。
kube-controller-manager 的功能
kube-controller-manager 是 Kubernetes 主控节点(Master Node)上的一个关键组件,它负责运行核心控制循环,这些控制循环处理集群范围内的各种功能。kube-controller-manager 通过监听 API Server 的变化来触发相应的控制器逻辑,从而实现对整个集群的管理和自动化操作。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. kube-controller-manager 是 Kubernetes 主控节点上的关键组件,负责运行核心控制循环,处理集群范围内的各种功能。 2. kube-controller-manager 通过监听 API Server 的变化来触发相应的控制器逻辑,实现对整个集群的管理和自动化操作。 3. kube-controller-manager 中聚合了多个控制器,这些控制器的具体实现位于 `pkg/controller/` 目录下。 4. kube-controller-manager 的启动代码位于 `Run` 方法中,其中包括启动事件记录器和创建客户端构建器等步骤。 5. 创建控制器上下文的过程中,需要创建版本化客户端、共享 informer、元数据客户端和元数据 informer,并等待 kube-apiserver 成功运行。 6. 创建动态 RESTMapper 用来构建动态资源的 REST 请求路径。 7. 判断 kube-controller-manager 是否开启了 GC,并创建用于构建资源依赖图的 GraphBuilder,用于垃圾收集的管理。 8. `CreateControllerContext` 函数返回 `ControllerContext` 类型的结构体实例,包含了在后续程序中启动各个控制器所需的信息。 9. 通过 `CreateControllerContext` 函数创建的控制器上下文实例包括了控制器的初始化选项、RESTMapper、控制器的启动顺序管理等信息。 10. kube-controller-manager 通过领导者选举来确保同一时间只有一个实例在运行,以保证执行的正确性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kubernetes 源码剖析与实战》,新⼈⾸单¥68
《Kubernetes 源码剖析与实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论