2. Kubernetes 多集群架构基础

在云原生生产环境中,单一集群往往无法满足地理分布、故障隔离、资源弹性及合规要求。多集群架构通过将工作负载分散到多个 Kubernetes 集群,实现更高的可用性与资源利用率。本章聚焦三种核心多集群技术:联邦集群(KubeFed)、Cluster API 以及多集群网络模型(Submariner / Cilium Cluster Mesh),为后续跨集群调度与 Helm Chart 集成审计奠定架构基础。

2.1 联邦集群(KubeFed)原理

KubeFed(Kubernetes Federation)是 CNCF 孵化的开源项目,旨在通过一个控制平面统一管理多个 Kubernetes 集群。其核心思想是“将多个集群视为一个逻辑集群”,实现跨集群的资源分发、服务发现与策略同步。

2.1.1 核心组件与工作流

  • Federation Control Plane:运行在宿主集群中,负责接收用户提交的联邦资源(如 FederatedDeployment)。
  • Cluster Registry:维护成员集群的元数据(API Server 地址、凭证、区域标签)。
  • Sync Controller:将联邦资源模板与差异化覆盖(Overrides)推送到目标成员集群。
  • DNS Controller:跨集群同步 Service 的 DNS 记录,实现全局服务发现。
关键概念: KubeFed v2 采用“推模式”(Push-based),宿主集群主动向成员集群同步资源,而非成员集群拉取。这降低了成员集群的耦合度,但要求宿主集群具备所有成员集群的访问权限。
适用场景: 多集群统一部署策略、跨集群金丝雀发布、全局 DNS 负载均衡。不适合延迟敏感或网络分区频繁的环境。
KubeFed 联邦集群架构与资源同步流程 KubeFed 联邦集群架构与资源同步流程 宿主集群(Host Cluster) Federation Control Plane Cluster Registry Sync / DNS Controller 成员集群 A FederatedDeployment FederatedService 成员集群 B FederatedDeployment FederatedService 用户 / CI/CD 同步流程说明: 1. 用户在宿主集群提交 FederatedDeployment(含模板 + 覆盖策略)。 2. Sync Controller 根据 Cluster Registry 和 Overrides 将资源推送到各成员集群。 3. DNS Controller 跨集群同步 Service 的 DNS 记录,实现全局服务发现。

2.2 Cluster API 概述

Cluster API(CAPI)是 Kubernetes SIG Cluster Lifecycle 主导的项目,旨在通过声明式 API 管理 Kubernetes 集群的完整生命周期(创建、扩缩容、升级、销毁)。与 KubeFed 关注“集群之上”的资源分发不同,Cluster API 关注“集群本身”的自动化管理。

2.2.1 核心资源对象

资源对象 职责 示例
Cluster 定义集群的拓扑、网络、基础设施提供商 Cluster.spec.infrastructureRef → AWSCluster
Machine 描述一个计算节点(虚拟机或裸金属) Machine.spec.bootstrap.dataSecretName
MachineDeployment 管理一组 Machine 的滚动更新与扩缩容 类似 Deployment 管理 Pod
MachineSet 确保指定数量的 Machine 处于运行状态 由 MachineDeployment 控制
Infrastructure Provider 对接云厂商(AWS、Azure、GCP)或裸金属 AWSCluster, AzureCluster
安全审计要点: Cluster API 控制平面与工作集群之间的凭证管理是审计重点。默认情况下,CAPI 会在工作集群中生成 kubeconfig 并存储为 Secret。必须确保这些 Secret 的访问控制(RBAC + 加密)符合企业安全基线。

2.2.2 工作流示例

# 1. 创建基础设施集群定义
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: AWSCluster
metadata:
  name: prod-cluster
spec:
  region: us-east-1
  sshKeyName: capi-key
---
# 2. 创建 Cluster 对象,引用基础设施
apiVersion: cluster.x-k8s.io/v1beta2
kind: Cluster
metadata:
  name: prod-cluster
spec:
  infrastructureRef:
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
    kind: AWSCluster
    name: prod-cluster
---
# 3. 创建 MachineDeployment 定义工作节点
apiVersion: cluster.x-k8s.io/v1beta2
kind: MachineDeployment
metadata:
  name: prod-worker-md
spec:
  clusterName: prod-cluster
  replicas: 3
  template:
    spec:
      version: v1.28.0
      bootstrap:
        dataSecretName: prod-cluster-bootstrap

2.3 多集群网络模型

多集群网络解决的核心问题是:Pod 与 Service 如何跨集群通信。本节介绍两种主流方案:Submariner 与 Cilium Cluster Mesh。

2.3.1 Submariner

Submariner 由 Red Hat 开源,采用 Gateway Engine + IPsec/WireGuard 隧道 实现跨集群 Pod/Service 网络连通。其架构包含以下组件:

  • Gateway Engine:在每个集群中部署,负责建立加密隧道并转发跨集群流量。
  • Service Discovery:基于 Lighthouse 组件,通过 CoreDNS 实现跨集群 Service 解析。
  • Globalnet:解决集群间 Pod CIDR 重叠问题,通过全局 IP 映射实现互通。
性能特征: Submariner 的隧道模式会引入额外的封装开销(IPsec 约 5-10% 吞吐损失)。适合中等规模集群(< 50 集群)且对延迟不极端敏感的场景。

2.3.2 Cilium Cluster Mesh

Cilium Cluster Mesh 基于 eBPF 技术,通过 直接路由或 VXLAN 隧道 实现跨集群通信,并利用 etcd 或 KV 存储 同步全局身份标识与网络策略。其核心优势在于:

  • 原生性能:eBPF 数据路径避免 iptables 遍历,延迟接近本地集群通信。
  • 统一网络策略:跨集群的 NetworkPolicy 与 Clusterwide NetworkPolicy 可一致执行。
  • 服务网格集成:与 Istio 等 Service Mesh 配合,实现 mTLS 跨集群加密。
Submariner 与 Cilium Cluster Mesh 架构对比 Submariner 与 Cilium Cluster Mesh 架构对比 Submariner 架构 集群 A Gateway Engine 集群 B Gateway Engine IPsec/WireGuard Lighthouse DNS 跨集群服务发现 Cilium Cluster Mesh 集群 1 Cilium Agent (eBPF) 集群 2 Cilium Agent (eBPF) VXLAN / 直接路由 etcd / KV Store 同步身份与策略 关键对比维度 • 数据平面:Submariner 基于 IPsec/WireGuard 隧道;Cilium 基于 eBPF 直接路由或 VXLAN。 • 性能开销:Submariner 隧道封装增加 5-10% 延迟;Cilium eBPF 接近本地网络性能。 • 服务发现:Submariner 依赖 Lighthouse DNS;Cilium 通过 KV Store 全局同步。 • 网络策略:Submariner 需额外配置;Cilium 原生支持跨集群 NetworkPolicy。 • 适用规模:Submariner 适合中小规模(< 50 集群);Cilium 适合大规模(100+ 集群)。

2.4 多集群架构选型参考

维度 KubeFed Cluster API Submariner Cilium Cluster Mesh
核心目标 跨集群资源分发与策略同步 集群生命周期自动化 跨集群网络连通 高性能跨集群网络与安全
控制平面 宿主集群(推模式) 管理集群(声明式) 无中心控制平面 无中心控制平面(KV Store)
网络依赖 API Server 可达即可 API Server 可达即可 需要隧道网关互通 需要节点间网络互通
安全审计重点 联邦资源覆盖策略、RBAC 传播 工作集群 kubeconfig 凭证管理 隧道加密密钥、Globalnet 映射 KV Store 访问控制、eBPF 程序完整性
生产建议: 在实施跨集群调度与 Helm Chart 集成审计前,建议先明确多集群网络方案(Submariner 或 Cilium Cluster Mesh),因为网络连通性是后续跨集群资源分发与监控的基础。KubeFed 与 Cluster API 可并行使用:Cluster API 负责集群的创建与升级,KubeFed 负责集群之上的应用部署策略。