2. 多集群基础概念:集群联邦、控制平面、工作集群、集群注册与生命周期管理
在多集群架构中,核心挑战在于如何将多个地理位置或云环境中的 Kubernetes 集群统一管理、调度与治理。本章将围绕集群联邦(Federation)、控制平面(Control Plane)、工作集群(Worker Cluster)、集群注册与生命周期管理四个基础概念展开,为后续流水线集成与 Helm Chart 环境配置奠定理论基础。
2.1 集群联邦(Cluster Federation)
集群联邦是一种将多个独立 Kubernetes 集群抽象为一个逻辑集群的架构模式。它允许用户通过统一的 API 端点进行资源调度、策略分发与状态同步,而无需关心底层集群的物理分布。
核心价值: 实现跨集群的资源统一编排、服务发现、流量管理与故障转移。
2.1.1 联邦架构组件
| 组件 | 职责 | 典型实现 |
|---|---|---|
| 联邦 API 服务器 | 接收用户请求,将资源分发到成员集群 | KubeFed API |
| 调度器 | 根据策略(如地域、资源配额)选择目标集群 | Federation Scheduler |
| 同步控制器 | 将联邦资源同步到各成员集群,并收集状态 | KubeFed Controller |
| DNS 管理器 | 跨集群服务发现与全局负载均衡 | CoreDNS + ExternalDNS |
2.1.2 联邦资源分发流程
- 用户在联邦 API 服务器上定义 FederatedDeployment 或 FederatedConfigMap。
- 调度器根据 ClusterSelector 和 ReplicaSchedulingPreference 决定目标集群。
- 同步控制器将资源模板(Template)与覆盖层(Overrides)合并后下发到各成员集群。
- 各成员集群的本地控制器执行资源创建/更新,并上报状态。
- 联邦控制器聚合状态,反馈给用户。
2.2 控制平面与工作集群
在多集群架构中,控制平面(Control Plane) 与 工作集群(Worker Cluster) 是两个核心角色。控制平面负责全局调度、策略下发与状态聚合;工作集群负责实际运行用户工作负载。
2.2.1 角色对比
| 维度 | 控制平面 | 工作集群 |
|---|---|---|
| 职责 | 全局资源编排、策略管理、跨集群调度 | 运行 Pod、Service、ConfigMap 等实际负载 |
| 组件 | 联邦 API、调度器、同步控制器、DNS 管理器 | kube-apiserver、kube-scheduler、kubelet、kube-proxy |
| 状态 | 维护全局资源视图,不直接运行容器 | 维护本地集群状态,运行容器 |
| 故障影响 | 影响新资源分发,已有工作负载不受影响 | 影响本地工作负载运行 |
| 扩展性 | 通常部署为高可用(3 副本) | 可根据业务需求水平扩展 |
最佳实践: 控制平面与工作集群应使用独立的 Kubernetes 集群部署,避免控制平面故障影响工作负载。控制平面集群通常不需要高性能节点,但需要稳定的网络连接。
2.3 集群注册与生命周期管理
集群注册是将工作集群加入联邦控制平面的过程,生命周期管理则涵盖集群的创建、注册、健康监控、升级、扩缩容与注销。
2.3.1 集群注册流程
- 准备阶段: 在工作集群上安装 kubefedctl 或使用 Cluster API 生成 Join 令牌。
- 注册命令: 执行
kubefedctl join <cluster-name> --host-cluster-context=<context>。 - 凭证注入: 控制平面获取工作集群的 kubeconfig 凭证,存储在 Secret 中。
- 状态同步: 控制平面开始拉取工作集群的资源状态,并下发联邦资源。
- 健康检查: 控制平面定期通过 ClusterStatus 资源监控工作集群的健康状况。
2.3.2 生命周期阶段
| 阶段 | 操作 | 关键指标 |
|---|---|---|
| Provisioning | 使用 Cluster API / Terraform 创建集群 | 集群创建时间 < 10 分钟 |
| Registration | 执行 kubefedctl join,注入凭证 | 注册成功率 > 99.9% |
| Active | 正常接收联邦资源,运行工作负载 | API 响应延迟 < 200ms |
| Upgrading | 滚动升级 Kubernetes 版本或组件 | Pod 中断预算(PDB)合规 |
| Draining | 迁移工作负载到其他集群 | Pod 迁移完成率 100% |
| Deregistration | 执行 kubefedctl unjoin,清理资源 | 残留资源清理完成 |
2.4 多集群变更门禁的集成要点
在流水线中集成多集群变更门禁时,需要关注以下关键点:
- 集群注册状态验证: 在部署前检查目标集群是否已注册且处于 Active 状态。
- 联邦资源版本控制: 使用 GitOps 方式管理 FederatedDeployment 等资源,确保变更可追溯。
- 渐进式分发: 利用调度策略(如 ReplicaSchedulingPreference)实现灰度发布,先分发到少量集群验证。
- 健康检查门禁: 在流水线中集成 ClusterStatus 检查,确保目标集群健康后再执行 Helm 安装/升级。
- 生命周期自动化: 通过 Cluster API 或 Terraform 实现集群的自动创建与注销,减少人工操作。
注意: 不要将控制平面与工作集群部署在同一集群中,否则控制平面故障会导致整个多集群系统不可用。控制平面应使用独立的 etcd 集群,并部署在稳定的基础设施上。