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 联邦资源分发流程

  1. 用户在联邦 API 服务器上定义 FederatedDeployment 或 FederatedConfigMap。
  2. 调度器根据 ClusterSelector 和 ReplicaSchedulingPreference 决定目标集群。
  3. 同步控制器将资源模板(Template)与覆盖层(Overrides)合并后下发到各成员集群。
  4. 各成员集群的本地控制器执行资源创建/更新,并上报状态。
  5. 联邦控制器聚合状态,反馈给用户。
集群联邦架构与资源分发流程 联邦控制平面 API 服务器 调度器 同步控制器 用户/CI 系统 工作集群 A us-east-1 Deployment: 3 副本 工作集群 B eu-west-1 Deployment: 5 副本 工作集群 C ap-southeast-1 Deployment: 2 副本 关键说明 联邦不直接管理 Pod/Service, 只分发资源模板。

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 集群注册流程

  1. 准备阶段: 在工作集群上安装 kubefedctl 或使用 Cluster API 生成 Join 令牌。
  2. 注册命令: 执行 kubefedctl join <cluster-name> --host-cluster-context=<context>。
  3. 凭证注入: 控制平面获取工作集群的 kubeconfig 凭证,存储在 Secret 中。
  4. 状态同步: 控制平面开始拉取工作集群的资源状态,并下发联邦资源。
  5. 健康检查: 控制平面定期通过 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,清理资源 残留资源清理完成
集群生命周期管理流程 Provisioning 创建集群 Registration 注册加入 Active 运行负载 Upgrading 升级版本 Draining 迁移负载 注销 生命周期管理关键动作 • 每个阶段都需通过 CI/CD 流水线触发 • 升级前必须执行 Drain 确保工作负载安全迁移 • 注销后需清理联邦资源与 DNS 记录

2.4 多集群变更门禁的集成要点

在流水线中集成多集群变更门禁时,需要关注以下关键点:

  • 集群注册状态验证: 在部署前检查目标集群是否已注册且处于 Active 状态。
  • 联邦资源版本控制: 使用 GitOps 方式管理 FederatedDeployment 等资源,确保变更可追溯。
  • 渐进式分发: 利用调度策略(如 ReplicaSchedulingPreference)实现灰度发布,先分发到少量集群验证。
  • 健康检查门禁: 在流水线中集成 ClusterStatus 检查,确保目标集群健康后再执行 Helm 安装/升级。
  • 生命周期自动化: 通过 Cluster API 或 Terraform 实现集群的自动创建与注销,减少人工操作。
注意: 不要将控制平面与工作集群部署在同一集群中,否则控制平面故障会导致整个多集群系统不可用。控制平面应使用独立的 etcd 集群,并部署在稳定的基础设施上。