ReplicationController详解
ReplicationController(缩写 rc,也是 kubectl 的快捷资源名)确保任意时刻都有指定数量的 Pod 副本在运行:多了就终止、少了就补建。它是 ReplicaSet 的前身——旧版 API,已被 Deployment + ReplicaSet 取代,官方明确建议不要在新环境中使用。这里写它,一是存量集群和老清单还会遇到,二是理解了它,RS 和 Deployment 的底层行为就通了。
一句话定位
RC 与 RS 的副本对账逻辑完全一致,差别只在 selector 表达能力和 API 版本;真正的"更新编排"能力是 Deployment 才有的。存量清单迁移方向一律是 Deployment。
工作原理
和 RS 一样,RC 是一个跨多节点的进程监视器:
- Pod 数量超出
replicas→ 终止多余的;不足 → 按模板启动新的; - 由 RC 创建的 Pod 在失败、被删除、节点维护(如内核升级重启)后都会被自动替换——即使只需要一个 Pod,也应该用控制器而不是裸 Pod;
- 它只认标签:selector 匹配的所有 Pod 都归它管,不区分是自己创建的还是别人创建的——这意味着可以随时删掉 RC 再建一个新的接管现有 Pod(selector 相同即可);
- 职责被刻意收窄(官方设计哲学):不做就绪/存活探测、不做自动扩缩、不做调度策略、不校验 Pod 是否与模板一致——它只是个可组合的构建基元,探活归 kubelet、扩缩归 HPA、更新编排归上层。