2、Multi-Cluster基础概念:集群联邦、Hub-Spoke架构、Global Control Plane、Cluster Registry

在深入资源模型驱动的控制平面高可用之前,必须先建立对 Multi-Cluster 基础架构的共识。本章将拆解四个核心概念:集群联邦(Cluster Federation)、Hub-Spoke 架构、Global Control Plane 和 Cluster Registry。它们是构建任何多集群系统的理论基石,也是后续章节讨论资源模型与高可用设计的共同语言。

2.1 集群联邦(Cluster Federation)

集群联邦是 Multi-Cluster 领域最早被广泛提出的抽象模式。其核心思想是:将多个物理或逻辑上独立的 Kubernetes 集群,通过一个统一的控制面进行编排,对外表现为一个“逻辑大集群”。

关键特征: 联邦层负责将资源(如 Deployment、Service)同步到所有成员集群,并确保跨集群的服务发现与流量调度。

联邦模式通常分为两个层次:

  • 资源联邦: 将 Kubernetes 原生资源(Deployment、ConfigMap、Secret)从联邦控制面分发到成员集群。典型实现为 KubeFed(Kubernetes Cluster Federation)。
  • 服务联邦: 在资源联邦之上,解决跨集群的服务发现与负载均衡。例如,通过 DNS 或 Service Mesh 将流量路由到不同集群的后端 Pod。
维度 单集群 集群联邦(KubeFed)
控制面数量 1 个 API Server 1 个联邦 API Server + N 个成员集群 API Server
资源作用域 Namespace / Cluster FederatedNamespace / FederatedDeployment
调度决策 调度器绑定到 Node 调度策略决定分发到哪些集群
故障隔离 控制面故障导致集群不可用 联邦控制面故障不影响已分发资源的运行
注意: 纯联邦模式在成员集群数量超过 20 个时,资源同步的延迟和 API Server 压力会显著上升。现代 Multi-Cluster 架构更倾向于使用 Hub-Spoke 模式来替代全量联邦同步。

2.2 Hub-Spoke 架构

Hub-Spoke 是目前生产环境中最主流的 Multi-Cluster 架构模式。它引入一个中心化的 Hub 集群(又称管理集群),负责策略下发、资源调度和状态聚合;而 Spoke 集群(又称工作集群)只运行实际业务负载,与 Hub 保持控制面通信。

与联邦的区别: Hub 不强制同步所有资源到所有 Spoke,而是按需分发;Spoke 集群通常不直接暴露 API Server 给外部,安全边界更清晰。

Hub-Spoke 架构的核心组件包括:

  1. Hub 集群: 运行 Multi-Cluster 控制面组件(如 Cluster Manager、Scheduler、Policy Engine)。
  2. Spoke 集群: 运行业务负载,通过 Agent 或反向连接与 Hub 通信。
  3. 控制面通道: 通常使用 VPN、Direct Connect 或公网 TLS 隧道,确保 Hub 到 Spoke 的 API 请求安全可达。
  4. 状态回传: Spoke 集群定期将资源状态、事件、Metrics 上报到 Hub,用于全局监控与调度。
Hub-Spoke 架构拓扑图 Hub-Spoke 架构拓扑图 Hub 集群 API Server / Scheduler / Policy Spoke 集群 1 业务负载 + Agent Spoke 集群 2 业务负载 + Agent Spoke 集群 3 业务负载 + Agent 说明: 1. Hub 集群通过控制面通道(TLS/VPN)管理所有 Spoke 集群。 2. Spoke 集群通过 Agent 反向连接 Hub,无需暴露 API Server 公网端口。 3. 资源分发策略在 Hub 侧定义,Spoke 只负责执行与状态回传。

2.3 Global Control Plane

Global Control Plane(全局控制面)是 Hub-Spoke 架构在逻辑上的进一步抽象。它不再局限于一个物理的 Hub 集群,而是一个由多个组件构成的、跨可用区部署的 逻辑控制面,负责管理所有成员集群的生命周期与资源调度。

Global Control Plane 通常包含以下关键服务:

  • Global API Server: 统一入口,接收用户对多集群资源的操作请求。
  • Global Scheduler: 根据资源需求、集群负载、地理位置、成本等因素,决定将工作负载调度到哪个成员集群。
  • Global Controller Manager: 运行各类控制器,如 Cluster Lifecycle Controller、Resource Template Controller、Policy Controller。
  • Cluster Registry: 维护所有成员集群的元数据、连接信息、健康状态(详见 2.4 节)。
高可用设计要点: Global Control Plane 本身必须支持多副本部署与故障转移。通常采用“Active-Passive”或“Active-Active”模式,配合分布式存储(etcd 集群)实现状态持久化。
Global Control Plane 组件架构图 Global Control Plane 组件架构图 Global API Server 统一入口 / 认证鉴权 Global Scheduler 跨集群调度决策 Global Controller 生命周期 / 策略执行 Cluster Registry 集群元数据存储 分布式存储(etcd 集群) 状态持久化 / 选举 / 强一致性 说明: Global Control Plane 各组件均支持多副本部署,通过 etcd 实现状态共享与领导者选举。 Cluster Registry 作为元数据中心,是调度器和控制器做出决策的关键依赖。

2.4 Cluster Registry

Cluster Registry 是 Multi-Cluster 架构的“通讯录”与“健康档案”。它集中存储所有成员集群的注册信息、连接凭证、资源容量、健康状态和标签元数据。无论是 Hub-Spoke 还是 Global Control Plane,Cluster Registry 都是控制面做出调度和运维决策的基础数据源。

一个典型的 Cluster Registry 记录包含以下字段:

字段 类型 说明
ClusterName string 集群唯一标识,如 prod-az1-cluster
APIEndpoint string 集群 API Server 的访问地址
Credentials secretRef 连接集群所需的 或 Kubeconfig 引用
Capacity map[string]Quantity 集群总资源量(CPU、Memory、GPU)
Allocatable map[string]Quantity 集群当前可分配资源量
Labels map[string]string 自定义标签,用于调度选择(如 region=us-east, env=prod)
HealthStatus enum Healthy / Degraded / Unreachable
LastHeartbeat timestamp 最近一次心跳上报时间,用于判断集群是否失联
实践建议: Cluster Registry 的数据应存储在 etcd 或外部数据库(如 MySQL、PostgreSQL)中,并开启 Watch 机制。当集群状态发生变化时,调度器和控制器能立即感知并触发重新调度或告警。

在资源模型驱动的 Multi-Cluster 架构中,Cluster Registry 不仅是静态的元数据存储,更是动态的“资源视图”。每个成员集群定期上报自身的资源水位、Pod 分布、节点状态,Registry 将这些信息聚合后提供给 Global Scheduler,用于做出最优的调度决策。

总结: 集群联邦提供了“逻辑大集群”的愿景;Hub-Spoke 架构给出了生产可用的拓扑模式;Global Control Plane 将控制面组件化、高可用化;Cluster Registry 则为这一切提供了数据基础。四者层层递进,共同构成了 Multi-Cluster 控制平面的理论骨架。