4. CAPI 架构深度解析:管理集群与工作负载集群、控制平面与基础设施的分离、Reconciliation Loop 机制
Cluster API (CAPI) 的核心架构设计遵循 Kubernetes 原生的声明式与控制器模式,将集群生命周期管理抽象为几个关键概念。理解管理集群与工作负载集群的职责划分、控制平面与基础设施的彻底解耦,以及驱动这一切的 Reconciliation Loop(调谐循环)机制,是掌握 CAPI 自动化升级能力的基础。
4.1 管理集群与工作负载集群:职责分离
CAPI 架构中明确区分了两类集群:管理集群和工作负载集群。这种分离是 CAPI 实现大规模集群自动化管理的前提。
| 集群类型 | 角色与职责 | 关键组件 |
|---|---|---|
| 管理集群 | 运行 CAPI 控制器、提供 API 端点、存储集群状态。它本身不运行用户业务负载,而是作为“集群的集群”存在。 | Kubernetes API Server、etcd、CAPI 核心控制器、ClusterResourceSet 控制器、Provider 控制器 |
| 工作负载集群 | 运行用户容器化应用。其生命周期(创建、扩缩容、升级、销毁)完全由管理集群通过 CAPI 资源对象声明式管理。 | Kubelet、kube-proxy、CNI 插件、CSI 驱动、用户应用 Pod |
关键理解: 管理集群是大脑和指挥中心,工作负载集群是被管理的对象。管理集群的稳定性直接决定了所有工作负载集群的可用性。在生产环境中,管理集群通常以高可用(HA)模式部署,并建议与工作负载集群使用不同的基础设施资源池。
4.2 控制平面与基础设施的分离:抽象与解耦
CAPI 通过引入 Cluster、Machine、MachineDeployment 等核心资源,将集群的“控制平面”与“基础设施”彻底解耦。这种设计使得同一套 CAPI 工作流可以管理不同云厂商(AWS、Azure、vSphere)或裸金属上的集群。
- 控制平面组件:由
KubeadmControlPlane或AWSManagedControlPlane等资源定义,负责 etcd、API Server、Controller Manager 的部署与升级。 - 基础设施组件:由
AWSMachineTemplate、AzureMachineTemplate、DockerMachineTemplate等资源定义,负责虚拟机、网络、存储等资源的创建与销毁。
下图展示了 CAPI 核心资源之间的引用关系,清晰体现了控制平面与基础设施的分离:
解耦优势: 当需要升级控制平面版本时,只需修改
KubeadmControlPlane.spec.version,CAPI 会自动创建新的控制平面 Machine 并销毁旧的。基础设施模板(如 AWSMachineTemplate)保持不变,实现了“控制平面升级”与“基础设施配置”的完全独立演进。
4.3 Reconciliation Loop 机制:声明式驱动的核心
CAPI 的每个控制器(如 ClusterController、MachineController)都遵循 Kubernetes 原生的 Reconciliation Loop 模式。该模式确保系统的实际状态始终向用户声明的期望状态收敛。
一个典型的 Reconciliation Loop 包含以下步骤:
- Watch(监听):控制器通过 Informer 监听特定资源(如 Cluster、Machine)的变化事件(Add/Update/Delete)。
- Reconcile(调谐):事件触发后,控制器将资源对象的 key(namespace/name)放入工作队列。Reconciler 从队列中取出 key,读取当前资源的最新 Spec 和 Status。
- Compare(比较):控制器比较 Spec(期望状态)与 Status(实际状态)的差异。例如,期望 3 个控制平面节点,实际只有 2 个。
- Act(执行):根据差异执行具体操作。调用基础设施 Provider 创建缺失的 Machine,或更新现有 Machine 的配置。
- Update Status(更新状态):操作完成后,更新资源的 Status 字段,记录当前实际状态和任何错误信息。
- Re-queue(重新入队):如果操作未完成或出现临时错误,控制器会将 key 重新入队,等待下一次调谐。如果操作成功完成,则等待下一次 Watch 事件。
下图展示了 CAPI Machine Controller 的 Reconciliation Loop 流程:
调谐频率与背压: CAPI 控制器默认使用指数退避(Exponential Backoff)策略处理失败调谐。如果某个 Machine 持续创建失败,控制器会逐渐增加重试间隔(从 5 秒到最多 5 分钟),避免对 API Server 和基础设施 Provider 造成过载。在集群升级场景中,理解这一机制有助于诊断“升级卡住”的问题。
4.4 架构总结:三者如何协同工作
管理集群、控制平面与基础设施分离、Reconciliation Loop 三者共同构成了 CAPI 的自动化基石:
- 管理集群 承载 Reconciliation Loop 的执行环境。
- 控制平面与基础设施分离 定义了 Loop 中“比较”和“执行”阶段的操作对象(Spec vs Status)。
- Reconciliation Loop 是驱动状态收敛的引擎,确保管理集群中声明的集群规格最终在工作负载集群上得以实现。