Kubernetes 源码剖析与实战
孔令飞
前腾讯云专家工程师
1462 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已更新 35 讲/共 55 讲
第五章 · Kubernetes 核心组件源码剖析 (1讲)
Kubernetes 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

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 的变化来触发相应的控制器逻辑,从而实现对整个集群的管理和自动化操作。
kube-controller-manager 中聚合了多个控制器,这些控制器可以在 names 包中找到。控制器的具体实现位于 pkg/controller/ 目录下。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
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
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部