3. 多集群拓扑模型:Hub-Spoke、联邦、网格三种拓扑对比、适用场景与快照策略差异

在多集群 Kubernetes 架构中,拓扑模型决定了控制面关系、数据流转路径以及租户边界的划分方式。当前主流的多集群拓扑分为 Hub-Spoke(中心辐射型)、联邦(Federation) 和 网格(Mesh) 三种。不同的拓扑直接影响 kubeconfig 快照的采集范围、刷新频率和回退粒度。

3.1 三种拓扑模型核心对比

维度 Hub-Spoke 联邦(Federation) 网格(Mesh)
控制面关系 中心 Hub 统一管控,Spoke 仅运行工作负载 联邦控制面(KubeFed)跨集群同步资源 对等关系,每个集群拥有独立控制面
数据面流向 Spoke → Hub 上报状态,Hub → Spoke 下发配置 联邦 API 向所有成员集群推送 集群间直接通信,通常通过服务网格(Istio/Linkerd)
租户边界 以 Spoke 集群为租户隔离单元 跨集群命名空间或标签选择器 以网格内的服务身份和 mTLS 证书为边界
kubeconfig 数量 1 个 Hub 管理 kubeconfig + N 个 Spoke 访问 kubeconfig 1 个联邦控制面 kubeconfig + 每个成员集群独立 kubeconfig 每个集群独立 kubeconfig,网格控制面额外提供统一入口
快照采集策略 Hub 侧聚合快照,Spoke 侧按需快照 联邦资源模板快照 + 成员集群差异快照 每个集群独立快照,网格控制面记录全局拓扑快照
典型工具 Rancher、OpenShift ACM、Karmada KubeFed、OCM Placement Istio、Consul Connect、Cilium ClusterMesh
关键结论: Hub-Spoke 适合集中管控+边缘隔离场景;联邦适合跨集群资源统一编排;网格适合服务间零信任通信。快照策略必须与拓扑的控制面耦合度对齐。

3.2 Hub-Spoke 拓扑与快照策略

Hub-Spoke 是最常见的多集群拓扑,典型代表是 Rancher 和 Karmada。Hub 集群持有所有 Spoke 集群的 kubeconfig,并负责统一认证、策略下发和状态聚合。

Hub-Spoke 拓扑与快照采集点 Hub 集群 聚合快照 / 策略下发 Spoke 集群 A 按需快照 / 本地 kubeconfig Spoke 集群 B 按需快照 / 本地 kubeconfig Spoke 集群 C 按需快照 / 本地 kubeconfig 快照存储(Hub 侧聚合)
快照策略建议: Hub 侧每 5 分钟执行一次全量快照,记录所有 Spoke 的 kubeconfig 和集群状态;Spoke 侧仅在发生租户边界变更(如 namespace 创建/删除、RBAC 更新)时触发增量快照。回退时优先使用 Hub 侧聚合快照恢复全局拓扑。

3.3 联邦拓扑与快照策略

联邦拓扑通过 KubeFed 或 OCM 实现跨集群资源同步。联邦控制面维护一份资源模板(Template),并将其分发到选定的成员集群。快照需要同时捕获模板层和每个成员集群的实际状态。

联邦拓扑:模板快照 + 成员差异快照 联邦控制面 资源模板 / 调度策略 成员集群 1 实际资源状态 成员集群 2 实际资源状态 成员集群 3 实际资源状态 模板快照(联邦 API) 成员差异快照(按集群)
快照回退风险: 联邦拓扑中,模板快照回退可能导致成员集群资源被强制覆盖。建议在回退前执行 kubefedctl diff 或 ocm clusteradm get work 预览差异,避免意外删除成员集群上的本地定制资源。

3.4 网格拓扑与快照策略

网格拓扑(Service Mesh)强调服务间通信的零信任和可观测性。每个集群拥有独立控制面,网格控制面(如 Istio 的 istiod)通过 服务发现 和 mTLS 证书 建立跨集群信任。快照需要记录每个集群的 kubeconfig、网格配置(ConfigMap/CRD)以及证书颁发状态。

网格拓扑:独立快照 + 全局拓扑快照 集群 A istiod / 服务 A kubeconfig: cluster-a.yaml 集群 B istiod / 服务 B kubeconfig: cluster-b.yaml 集群 C istiod / 服务 C kubeconfig: cluster-c.yaml 网格控制面(全局拓扑) 全局拓扑快照 + 证书快照
快照策略建议: 网格拓扑中,每个集群的 kubeconfig 快照应独立存储,同时网格控制面每 10 分钟生成一次全局拓扑快照(包含所有集群的服务端点、mTLS 证书序列号和路由规则)。回退时先恢复全局拓扑快照,再按集群粒度回退 kubeconfig。

3.5 快照策略差异总结

拓扑类型 快照粒度 快照频率 回退范围 关键风险
Hub-Spoke Hub 聚合 + Spoke 按需 Hub 5min / Spoke 事件触发 全局回退或单 Spoke 回退 Hub 单点故障导致所有 Spoke 不可控
联邦 模板快照 + 成员差异快照 模板 10min / 成员 15min 模板回退或成员选择性回退 模板回退覆盖成员本地定制
网格 独立集群快照 + 全局拓扑快照 独立 5min / 全局 10min 全局拓扑回退或单集群回退 证书过期导致跨集群通信中断
实践要点:
  • Hub-Spoke 拓扑中,务必在 Hub 侧保留最近 3 次全量快照,防止快照损坏导致回退失败。
  • 联邦拓扑中,模板快照应包含 kubefedctl federate 生成的 YAML 清单,成员差异快照使用 kubectl get --cluster 按集群导出。
  • 网格拓扑中,证书快照建议使用 istioctl pc secret 导出,并与 kubeconfig 快照分开存储。