04 控制器调和循环

控制器调和循环

控制器反复比较期望与实际状态,按对象 key 入队再执行幂等调和;事件会合并,可靠性来自重新观察。
版本:Kubernetes v1.37.2;核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification { element actor { style { shape person; color amber } } element system { style { color muted } } element component { style { color primary } } element storage { style { shape storage; color green } } } model { api = component 'API server' cache = component 'Informer / 缓存' q = storage '工作队列' ctrl = component 'ReplicaSet controller' pod = component 'Pod 对象' } views { dynamic view index { title '核心链路' variant sequence api -> cache 'list/watch 对象变化' cache -> q '按所属 ReplicaSet key 入队' q -> ctrl '工作线程取 key' ctrl -> cache '读取期望副本与已有 Pod' ctrl -> ctrl '计算差额并处理删除中对象等状态' ctrl -> api '创建 / 删除需要调整的 Pod' api -> pod '保存对象变化' ctrl -> api '更新 ReplicaSet 状态' api -> cache '后续变化再次驱动观察' } }

关键判断

  • 以 ReplicaSet 为例:spec.replicas 是期望数量,控制器根据受其管理的 Pod 判断是否补建或缩减。
  • Deployment 控制器管理 ReplicaSet,ReplicaSet 控制器管理 Pod;不能把整条链的职责全归给一个控制器。
  • 控制器只提交对象变更,容器运行仍由 scheduler 与 kubelet 接力;缓存可能短暂落后,失败需重试。

边界

调和不承诺每个事件只执行一次,也不承诺立即收敛;按状态设计幂等动作,并处理 resourceVersion 冲突。

官方出处与源码

回到首页 · 上一篇