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 核心资源之间的引用关系,清晰体现了控制平面与基础设施的分离:

CAPI 核心资源关系:控制平面与基础设施分离 Cluster KubeadmControlPlane MachineDeployment AWSMachineTemplate (Infra) AWSMachineTemplate (Infra) Machine 控制平面资源 基础设施模板 Machine 实例
解耦优势: 当需要升级控制平面版本时,只需修改 KubeadmControlPlane.spec.version,CAPI 会自动创建新的控制平面 Machine 并销毁旧的。基础设施模板(如 AWSMachineTemplate)保持不变,实现了“控制平面升级”与“基础设施配置”的完全独立演进。

4.3 Reconciliation Loop 机制:声明式驱动的核心

CAPI 的每个控制器(如 ClusterController、MachineController)都遵循 Kubernetes 原生的 Reconciliation Loop 模式。该模式确保系统的实际状态始终向用户声明的期望状态收敛。

一个典型的 Reconciliation Loop 包含以下步骤:

  1. Watch(监听):控制器通过 Informer 监听特定资源(如 Cluster、Machine)的变化事件(Add/Update/Delete)。
  2. Reconcile(调谐):事件触发后,控制器将资源对象的 key(namespace/name)放入工作队列。Reconciler 从队列中取出 key,读取当前资源的最新 Spec 和 Status。
  3. Compare(比较):控制器比较 Spec(期望状态)与 Status(实际状态)的差异。例如,期望 3 个控制平面节点,实际只有 2 个。
  4. Act(执行):根据差异执行具体操作。调用基础设施 Provider 创建缺失的 Machine,或更新现有 Machine 的配置。
  5. Update Status(更新状态):操作完成后,更新资源的 Status 字段,记录当前实际状态和任何错误信息。
  6. Re-queue(重新入队):如果操作未完成或出现临时错误,控制器会将 key 重新入队,等待下一次调谐。如果操作成功完成,则等待下一次 Watch 事件。

下图展示了 CAPI Machine Controller 的 Reconciliation Loop 流程:

CAPI Machine Controller Reconciliation Loop 1. Watch 事件 2. 工作队列 3. Reconcile 调谐 4. 比较 Spec vs Status 有差异? 5. Act 执行操作 6. 更新 Status 7. Re-queue 重试 是 否 错误
调谐频率与背压: CAPI 控制器默认使用指数退避(Exponential Backoff)策略处理失败调谐。如果某个 Machine 持续创建失败,控制器会逐渐增加重试间隔(从 5 秒到最多 5 分钟),避免对 API Server 和基础设施 Provider 造成过载。在集群升级场景中,理解这一机制有助于诊断“升级卡住”的问题。

4.4 架构总结:三者如何协同工作

管理集群、控制平面与基础设施分离、Reconciliation Loop 三者共同构成了 CAPI 的自动化基石:

  • 管理集群 承载 Reconciliation Loop 的执行环境。
  • 控制平面与基础设施分离 定义了 Loop 中“比较”和“执行”阶段的操作对象(Spec vs Status)。
  • Reconciliation Loop 是驱动状态收敛的引擎,确保管理集群中声明的集群规格最终在工作负载集群上得以实现。