2. Kubernetes多集群基础:多集群的定义、常见多集群拓扑与工具概览

在进入具体的Deployment升级策略与准入控制联动之前,必须先建立对多集群环境的统一认知。多集群架构并非简单的“多套Kubernetes集群”,而是涉及网络拓扑、资源调度、策略治理和故障隔离的系统性设计。本章将定义多集群的核心概念,梳理三种主流拓扑模式,并对比当前社区最活跃的三款多集群管理工具。

2.1 多集群的定义与核心价值

多集群架构是指组织同时管理两个或两个以上Kubernetes集群,并通过某种控制面或编排层实现资源调度、应用分发、策略治理和故障隔离的架构模式。其核心驱动力包括:

  • 地理分布与延迟优化:将工作负载部署到靠近用户的区域集群,降低网络延迟。
  • 高可用与故障隔离:避免单集群故障导致全局服务中断,实现跨AZ/Region的容灾。
  • 环境隔离与合规:开发、测试、生产集群物理或逻辑隔离,满足安全审计与数据主权要求。
  • 资源弹性与成本控制:利用不同云厂商或本地IDC的差异化成本,实现混合云/多云调度。
关键认知: 多集群不是“集群数量的简单叠加”,而是引入了控制面与数据面分离、全局资源视图、跨集群网络互通三个新维度。任何多集群方案都必须回答“谁来做决策”和“数据如何流动”这两个根本问题。

2.2 常见多集群拓扑模式

根据控制面的位置、集群间的关系以及资源调度方式,多集群拓扑主要分为三种模式。下表从控制面位置、调度粒度、典型场景三个维度进行对比:

拓扑模式 控制面位置 调度粒度 典型场景 运维复杂度
Hub-Spoke(中心辐射) 中心Hub集群 应用/Deployment级别 边缘计算、多云分发、统一策略管控 中
Federation(联邦) 逻辑联邦控制面 资源模板级别 跨集群资源同步、统一服务发现 高
独立集群(Standalone) 每个集群独立 无统一调度 开发/测试隔离、完全自治 低

2.2.1 Hub-Spoke 拓扑

Hub-Spoke是目前生产环境中最广泛采用的多集群模式。一个中心集群(Hub)作为控制面,负责策略下发、资源分发和状态收集;多个成员集群(Spoke)仅运行工作负载,不参与全局决策。这种模式天然适合“一次部署,多地运行”的场景,也是Karmada、Clusternet等工具的核心架构基础。

Hub-Spoke 多集群拓扑 Hub 控制面集群 策略下发 · 资源分发 · 状态收集 Spoke 集群 A 区域:华东 · 生产 Spoke 集群 B 区域:华北 · 生产 Spoke 集群 C 区域:华南 · 灾备 核心特征 控制面与数据面分离 · 中心化策略 · Spoke集群无全局决策权 代表工具:Karmada、Clusternet、OCM

2.2.2 Federation 拓扑

Federation(联邦)模式通过一个逻辑联邦控制面,将多个集群的资源“同步”到统一视图。Kubernetes社区早期的kubefed项目即采用此模式。联邦控制面不直接调度Pod,而是将资源模板(如Deployment、Service)分发到所有成员集群,由各集群的调度器自行处理。这种模式适合需要跨集群服务发现和统一DNS的场景,但控制面复杂度较高,且对网络延迟敏感。

2.2.3 独立集群拓扑

独立集群模式是最简单的多集群形态:每个集群完全自治,没有统一的控制面。团队通常通过CI/CD流水线或手动方式分别部署应用。这种模式运维成本最低,但缺乏全局资源视图和统一策略治理,适用于开发/测试环境或完全隔离的业务线。

2.3 多集群管理工具概览

当前社区最活跃的三款多集群管理工具分别是Karmada、Clusternet和OCM(Open Cluster Management)。它们都采用Hub-Spoke架构,但在资源模型、调度策略和扩展性上存在显著差异。下表从关键维度进行对比:

维度 Karmada Clusternet OCM
发起方 华为云(CNCF孵化项目) 腾讯云(CNCF沙箱项目) Red Hat / IBM(CNCF孵化项目)
核心资源模型 ResourceTemplate + PropagationPolicy Subscription + FeedInventory ManifestWork + Placement
调度策略 静态调度 + 动态权重 + 差异化 基于拓扑的调度 + 优先级 基于标签的Placement + 滚动更新
集群接入方式 Push模式(Hub主动下发) Pull模式(Spoke主动注册) Push + Pull 双模式
对原生API兼容性 高(兼容标准Kubernetes API) 中(扩展CRD较多) 高(通过ManifestWork封装)
典型优势 策略灵活、社区活跃、文档完善 边缘友好、网络穿透能力强 与OpenShift深度集成、生态丰富

2.3.1 Karmada

Karmada(Kubernetes Armada)是华为云开源的CNCF孵化项目,其设计哲学是“Kubernetes原生多集群”。它通过PropagationPolicy和OverridePolicy实现精细化的资源分发与差异化配置。Karmada的调度器支持静态调度、动态权重和故障转移,非常适合需要精细化策略控制的生产环境。

# Karmada PropagationPolicy 示例:将Deployment分发到两个生产集群
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: nginx-deploy-policy
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: nginx
  placement:
    clusterAffinity:
      clusterNames:
        - prod-cluster-east
        - prod-cluster-west
    replicaScheduling:
      replicaDivisionPreference: Weighted
      replicaScheduling:
        weightPreference:
          staticWeightList:
            - targetCluster: prod-cluster-east
              weight: 2
            - targetCluster: prod-cluster-west
              weight: 1

2.3.2 Clusternet

Clusternet由腾讯云开源,CNCF沙箱项目。其最大特点是“边缘友好”:Spoke集群通过反向连接(Pull模式)主动注册到Hub,即使Spoke集群位于NAT或防火墙之后也能被管理。Clusternet的Subscription模型支持基于拓扑的调度,适合边缘计算和IoT场景。

2.3.3 OCM(Open Cluster Management)

OCM由Red Hat/IBM主导,CNCF孵化项目,与OpenShift深度集成。OCM的核心抽象是ManifestWork(将一组Kubernetes资源打包分发)和Placement(基于标签选择目标集群)。OCM支持Push和Pull双模式,且提供了丰富的可观测性插件,适合企业级混合云场景。

选型建议:
  • 如果你需要最灵活的调度策略和社区活跃度,优先选择 Karmada。
  • 如果你的Spoke集群大量位于边缘/私有网络,且需要反向注册,优先选择 Clusternet。
  • 如果你已经使用OpenShift或需要企业级可观测性,优先选择 OCM。

2.4 多集群拓扑与工具选择对Deployment升级的影响

不同的拓扑和工具会直接影响Deployment升级策略的设计:

  • Hub-Spoke + Karmada:可以在Hub侧定义全局升级策略(如金丝雀比例、暂停条件),通过PropagationPolicy控制升级流量到不同Spoke集群的顺序。
  • Hub-Spoke + Clusternet:升级策略更多依赖Spoke集群自身的RollingUpdate,Hub主要负责分发,适合边缘场景下的“先升级中心,再分批推送到边缘”。
  • 独立集群:升级策略完全由各集群独立控制,需要通过外部CI/CD编排升级顺序,无法实现全局一致性。
常见误区: 不要认为多集群工具会自动处理Deployment的滚动升级顺序。大多数工具只负责“分发”和“调度”,升级过程中的流量切换、健康检查、回滚策略仍然需要结合准入控制(Admission Webhook)和Service Mesh(如Istio)来实现精细化控制。这正是本课程后续章节要解决的核心问题。