多集群拓扑基础:Hub-Spoke、Federation、ClusterSet 等常见拓扑模式对比

在多集群架构设计中,拓扑模式决定了控制面如何分布、资源如何同步、以及故障域如何隔离。不同的拓扑模式适用于不同的业务规模和运维成熟度。本章从控制面耦合度、资源同步方向、租户边界隔离三个维度,对比三种主流模式:Hub-Spoke、Federation、ClusterSet。

1. 三种拓扑模式的核心特征

维度 Hub-Spoke Federation ClusterSet
控制面位置 中心 Hub 集群 独立 Federation 控制面 成员集群对等
资源同步方向 Hub → Spoke(单向推送) Federation → 成员(双向同步) 成员间对等同步
租户隔离粒度 按 Spoke 集群隔离 按 Federation Namespace 隔离 按 ClusterSet 标签隔离
故障影响范围 Hub 故障影响全局 Federation 控制面故障影响同步 单成员故障不影响其他成员
典型工具 Karmada, OCM, Rancher KubeFed (v1/v2) Kubernetes Cluster API, Submariner
选型提示: 如果你的团队刚起步,推荐从 Hub-Spoke 开始,控制面集中、运维简单;当集群数量超过 50 且需要跨集群资源对等调度时,再考虑 Federation 或 ClusterSet。

2. Hub-Spoke 模式详解

Hub-Spoke 是最广泛使用的多集群拓扑。一个中心集群(Hub)作为控制面,管理多个工作集群(Spoke)。Hub 上运行调度器、资源模板和分发策略,Spoke 只运行实际工作负载。

  • 资源流向: Hub 通过 ResourceBinding 将模板推送到指定 Spoke。
  • 租户边界: 每个 Spoke 集群可以绑定一个租户,租户间完全隔离。
  • 版本差异风险: Hub 与 Spoke 的 Kubernetes API 版本不一致时,资源模板可能无法正确序列化。
Hub-Spoke 拓扑结构图 Hub 控制面 Spoke 集群 A Spoke 集群 B Spoke 集群 C 说明: Hub 通过 ResourceBinding 将资源模板推送到 Spoke 集群。 租户边界 = Spoke 集群边界,版本差异主要发生在 Hub ↔ Spoke 之间。 典型工具:Karmada、OCM、Rancher。

3. Federation 模式详解

Federation 模式通过一个独立的 Federation 控制面,将多个集群的资源统一编排。Federation 控制面不运行工作负载,只负责资源模板的分发和状态同步。

  • 资源流向: 双向同步——Federation 将模板推送到成员集群,成员集群的状态回写到 Federation。
  • 租户边界: 通过 Federation Namespace 划分,不同 Namespace 可以映射到不同成员集群。
  • 版本差异风险: 成员集群之间的 API 版本差异会导致状态回写失败或字段丢失。
Federation 拓扑结构图 Federation 控制面 成员集群 1 成员集群 2 成员集群 3 说明: Federation 控制面与成员集群之间是双向同步关系。 租户边界 = Federation Namespace,版本差异风险在成员集群之间。

4. ClusterSet 模式详解

ClusterSet 是 Kubernetes SIG 提出的对等多集群模型。集群之间没有中心控制面,通过 Cluster API 或 Submariner 实现网络互通和资源对等调度。

  • 资源流向: 成员集群之间对等同步,没有中心协调者。
  • 租户边界: 通过 ClusterSet 标签和 RBAC 实现逻辑隔离。
  • 版本差异风险: 每个集群独立演进,版本差异可能导致跨集群调度失败或资源不兼容。
关键区别: ClusterSet 没有单点故障,但版本一致性保障最弱。每个集群可以独立升级,但跨集群资源依赖需要版本兼容性校验。

5. 三种模式的版本差异风险对比

风险维度 Hub-Spoke Federation ClusterSet
API 版本不一致 Hub 与 Spoke 之间 成员集群之间 所有成员之间
CRD 版本差异 Hub 推送时校验 Federation 同步时校验 对等同步时校验
资源字段丢失 Spoke 版本低时丢弃字段 回写时字段截断 跨集群调度时字段不兼容
故障恢复复杂度 低(重启 Hub 即可) 中(需重建 Federation 状态) 高(需逐集群修复)

6. 选型建议与版本校验切入点

在实际项目中,拓扑模式的选择直接影响版本差异校验策略:

  • Hub-Spoke: 适合版本校验集中在 Hub 侧,通过准入 Webhook 拦截不兼容资源。
  • Federation: 适合在 Federation 控制面中增加版本兼容性检查器。
  • ClusterSet: 适合在每个集群的入口处做版本校验,或通过 Service Mesh 做协议兼容。