Kubernetes 组件——控制器与调度器专栏导览
专栏定位
如果 API Server 是 Kubernetes 的”中枢神经”,那么控制器和调度器就是 K8s 的”执行引擎”。K8s 的声明式模型意味着用户只描述”期望状态”(Desired State),而控制器负责持续协调(Reconcile)当前状态与期望状态的差异——这就是 K8s 最核心的运行机制:控制循环(Control Loop)。
调度器(Scheduler)是一种特殊的控制器——它的职责是决定”Pod 应该运行在哪个节点上”。调度看似简单,但背后涉及多维度的约束求解:资源容量、亲和性/反亲和性、拓扑分散、污点容忍、优先级抢占。
本专栏从控制器模式的原理出发,深入 Deployment / StatefulSet / DaemonSet / Job 等内置控制器的工作机制,然后系统解析 Scheduler 的调度流程与算法,最后介绍如何通过 Operator 模式扩展 K8s 的控制能力。
前置知识:架构原则与对象设计专栏(控制器模式、工作负载对象)+ API Server 专栏(List-Watch / Informer)。
目录
| 序号 | 文章 | 核心内容 |
|---|---|---|
| 01 | 01 控制器模式与协调循环 | 控制循环的本质(Observe → Diff → Act)、Level-triggered vs Edge-triggered、幂等性要求、乐观并发与冲突重试、Controller Manager 的架构 |
| 02 | 02 Deployment 控制器深度解析 | Deployment → ReplicaSet → Pod 的三级结构、滚动更新的执行过程(maxSurge / maxUnavailable)、回滚机制(Revision 与 ReplicaSet 历史)、暂停与恢复 |
| 03 | 03 StatefulSet 控制器深度解析 | 有状态应用的核心需求(稳定标识、有序部署、持久存储)、Pod 命名规则与 Headless Service、PVC 模板与存储绑定、有序滚动更新与分区更新 |
| 04 | 04 DaemonSet Job CronJob 控制器解析 | DaemonSet 的节点覆盖策略与滚动更新、Job 的并行模型与失败处理、CronJob 的调度语义与并发策略、TTL 清理 |
| 05 | 05 Scheduler 调度流程与算法 | 调度框架(Scheduling Framework)的插件化架构、预选(Filter)与优选(Score)阶段、资源请求与节点容量、亲和性/反亲和性、拓扑分散约束、污点与容忍、优先级与抢占 |
| 06 | 06 Operator 模式与自定义控制器 | CRD + 自定义控制器 = Operator、controller-runtime 框架(Kubebuilder)、Reconciler 的编写模式、Leader Election、Status 子资源更新、Operator 的设计最佳实践 |
推荐阅读路径
- 理解控制器本质:01 → 02(先原理后实例)
- 有状态应用:01 → 03
- 调度深入:05(可独立阅读)
- K8s 扩展开发:01 → 06
关联专栏
- API Server:Informer/Watch 是控制器的核心依赖
- K8s 架构:控制器模式、工作负载对象
- Go 工程实践:Kubebuilder/controller-runtime 基于 Go 生态
- OOP 设计模式:控制器模式对应观察者模式和状态机模式