4. 多集群架构概览:联邦集群、Hub-Spoke 架构、etcd 多集群部署模式、数据同步挑战
在生产环境中,单一 Kubernetes 集群存在规模上限、故障域集中、环境隔离不足等局限。多集群架构通过将工作负载分散到多个集群,实现更高的可用性、资源隔离与运维灵活性。本章从架构模式、etcd 部署形态及数据同步三个维度,梳理多集群管理的核心概念,为后续压测沙盘中的 PVC 一致性复核奠定架构认知基础。
4.1 联邦集群架构(Federation)
联邦集群(KubeFed / Federation v2)是最早的多集群管理方案之一,其核心思想是“通过一个控制面统一管理多个成员集群”。联邦控制面负责将资源模板(如 Deployment、Service)同步到所有成员集群,并支持跨集群的 DNS 与服务发现。
关键特征:
- 资源模板化:定义 FederatedDeployment、FederatedService 等 CRD,控制面自动分发到成员集群。
- 跨集群调度:支持基于标签的集群选择器,实现灰度发布或地域亲和。
- 状态回写:成员集群的资源状态会聚合回联邦控制面,形成全局视图。
适用场景:多区域部署、跨云灾备、统一策略管理。但联邦架构在 etcd 层面仍为每个集群独立存储,联邦控制面本身也需要 etcd 集群,增加了运维复杂度。
4.2 Hub-Spoke 架构
Hub-Spoke 是目前最主流的多集群管理模型。一个中心集群(Hub)作为管理入口,多个工作集群(Spoke)通过 Agent 与 Hub 通信。Hub 不直接运行用户工作负载,而是负责策略下发、资源分发与状态聚合。
| 角色 | 职责 | etcd 部署 |
|---|---|---|
| Hub 集群 | 管理面:存储全局资源、策略、成员集群元数据 | 独立 etcd 集群,存储 CRD 与状态聚合数据 |
| Spoke 集群 | 数据面:运行实际工作负载(Pod、PVC、Service) | 每个 Spoke 拥有独立 etcd,存储本集群资源 |
| Agent(如 Open Cluster Management) | 注册、心跳、资源同步、状态上报 | 不直接操作 etcd,通过 kube-apiserver 通信 |
PVC 一致性风险:在 Hub-Spoke 架构中,PVC 的创建与绑定发生在 Spoke 集群的 etcd 中,而 Hub 集群仅存储资源模板或策略。当 Spoke 集群发生 etcd 故障或数据不一致时,Hub 无法直接感知底层 PV/PVC 绑定状态,必须通过 Agent 上报或主动巡检来复核。
4.3 etcd 多集群部署模式
在多集群环境中,etcd 的部署模式直接影响数据一致性与运维复杂度。以下是三种常见模式:
- 独立 etcd 集群(每个集群一套):最常用模式,每个 Kubernetes 集群拥有独立的 etcd 成员。隔离性好,故障域最小,但跨集群数据无法直接查询,PVC 复核需逐个访问 etcd 端点。
- 共享 etcd 集群(多集群共用):多个 Kubernetes 集群共享同一套 etcd 集群,通过不同前缀(如 /registry/cluster1/、/registry/cluster2/)隔离。节省资源,但存在单点故障风险,且 etcd 写入压力集中。
- 跨地域 etcd 集群(Geo-Distributed):etcd 成员分布在多个数据中心,通过 Raft 协议保持强一致。适用于全球部署场景,但网络延迟会影响写入性能,且跨地域 etcd 运维复杂度极高。
| 部署模式 | 隔离性 | 一致性 | 运维复杂度 | PVC 复核影响 |
|---|---|---|---|---|
| 独立 etcd 集群 | 高 | 强(单集群内) | 中 | 需逐个连接 etcd 端点 |
| 共享 etcd 集群 | 中(前缀隔离) | 强(全局) | 低 | 单点查询,但需注意 key 冲突 |
| 跨地域 etcd 集群 | 中 | 强(Raft 跨地域) | 高 | 网络分区可能导致数据不一致 |
4.4 数据同步挑战
多集群架构的核心矛盾在于“数据一致性”与“网络分区容忍性”之间的权衡。在 PVC 一致性复核场景中,以下挑战尤为突出:
四大同步挑战:
- 跨集群 etcd 数据不一致:由于网络延迟、Agent 故障或 etcd 快照差异,同一 PVC 在不同集群的 etcd 中可能呈现不同的绑定状态(如 PV 已绑定 vs PV 未绑定)。
- 资源版本冲突:多集群同时修改同一 PVC 的注解或标签时,可能导致 etcd 中的 resourceVersion 冲突,引发更新失败或数据覆盖。
- 存储后端状态漂移:PV 对应的存储后端(如 Ceph RBD、NFS)可能因运维操作导致实际状态与 etcd 记录不符,多集群环境下这种漂移更难追踪。
- 级联删除与孤儿资源:当 Spoke 集群被删除或重建时,其 etcd 中的 PVC/PV 记录可能未正确清理,导致 Hub 集群中的资源模板与实际存储后端产生孤儿资源。
压测沙盘设计启示:在后续章节中,我们将通过模拟 etcd 节点故障、网络分区、Agent 心跳超时等场景,构造上述数据同步挑战,并验证 PVC 一致性复核脚本能否准确检测出不一致状态。沙盘中的每个 Spoke 集群都将运行独立的 etcd 实例,以便精确控制故障注入范围。