云原生计算基金会(CNCF)于最近宣布,Karmada(一个多集群、多云的 Kubernetes 编排项目)已经毕业。这个多集群、多云的 Kubernetes 编排项目达到了 CNCF 的最高成熟度层级。该层级面向已被广泛采用、可用于生产环境的稳定项目。这决策是在上海举办的 KubeCon + CloudNativeCon + OpenInfra Summit + PyTorch Conference China 2026 大会上作出的,此时恰逢该项目发布v1.19版本。此次更新增强了针对 AI 训练任务的多组件调度能力,还将基于优先级的调度提升为 Beta 级别,并且该功能现已默认开启。
在混合云使用、区域故障转移或避免厂商锁定的场景下,跨多个 Kubernetes 集群运行一个应用是很常见的做法。这通常需要定制的自动化方案,或者依赖如今已被归档的KubeFed项目。这种方式需要学习一套不同的联邦资源 API(federated-resources API),并且在灵活性方面存在问题。随着 GPU 算力分散到各个区域和云服务商,从事分布式 AI 训练与推理的团队面临着一个巨大的挑战,那就是没有任何单个集群提供足够数量的加速器。因此,工作负载需要在多个系统之间进行拆分、调度和迁移。
Karmada这一名称是 Kubernetes Armada 的缩写形式,它构建在标准 Kubernetes API 之上。Karmada 并不是要取代 Kubernetes API,因此现有的清单、控制器和工具无需任何改动就能在 Karmada 控制平面上运行。该控制平面由三个组件构成:Karmada API Server、Karmada Controller Manager 和 Karmada Scheduler,并由独立的 etcd 实例来维护状态。放置(Placement)逻辑通过两个自定义API来表达:一个是PropagationPolicy,它将一条策略映射到一组工作负载(1:n),并定义调度与分布约束,例如,集群亲和性、多集群拆分与再均衡,以及跨区域、可用区、集群或服务商的多维高可用性;另一个是OverridePolicy,它允许运维人员重写与集群相关的配置,例如,按区域替换容器镜像前缀,或按云服务商替换 StorageClass,而无需改动底层的资源模板。

在内部,有四个控制器负责传播工作:集群控制器(Cluster Controller)管理已注册成员集群的生命周期;策略控制器(Policy Controller)监听 PropagationPolicy 对象,并将匹配的资源绑定为 ResourceBinding 对象;绑定控制器(Binding Controller)把每个 ResourceBinding 转换为面向各集群的 Work 对象;执行控制器(Execution Controller)监听这些 Work 对象,并把生成的清单推送到每个成员集群自身的 API 服务器。Karmada 还从其控制平面组件导出 Prometheus 指标,并提供用于安装的 Helm chart,从而直接接入现有的 CNCF 可观测性与部署工具链,而不需要一套独立的工具栈。
自 2021 年 9 月加入 CNCF Sandbox 并于 2023 年 12 月进入 Incubating 以来,Karmada 已发展到拥有来自 292 家组织的超过 1214 名贡献者,在 GitHub 上收获了超过 5600 个星标。其生产环境采用者名单涵盖 Bloomberg、Wellhub、Alibaba Cloud、Huawei、Trip.com、Bilibili、iFLYTEK、JDCloud、Kuaishou、RedNote、SenseTime、Vivo、WPS 和 ZTO,它们将该技术用于混合云算力、跨区域韧性、面向 AI 工作负载的 GPU/CPU 调度,以及全集群范围的配置分发。为了毕业,该项目完成了一次第三方安全审计,还组建了正式的指导委员会,采纳了 CNCF 行为准则,并持续保有 CII 最佳实践徽章。
该项目的 TOC 赞助商 Chad Beaudin 表示:
当组织规模超过单个 Kubernetes 集群时,它们需要一种不增加复杂度的统一管理方式。Karmada 通过扩展人们熟悉的 Kubernetes API,使其能够跨集群、跨云工作,从而解决了这一问题。
Trip.com的高级开发专家 Yue Honghui 表示:
在 Trip.com,Karmada 已经成为我们多集群基础设施中至关重要的一部分,并在生产环境中交付了显著的价值。它在不改动现有 Kubernetes 资源定义的前提下,使我们能够将多个集群作为统一资源池来运营,支持跨集群的弹性与故障转移,能够更高效地将新集群投产,并在对应用影响最小的情况下完成大规模的工作负载迁移。
Karmada 是取代已废弃的 KubeFed(Federation v2)的两个CNCF项目之一。另一个项目是Open Cluster Management(OCM)。OCM 目前仍处于 Sandbox 阶段,它采用一种中心辐射式、基于代理的方法,侧重于集群清单和附加组件 API。OCM 支持Red Hat Advanced Cluster Management,专注于治理与策略分发。而 Karmada 则强调工作负载放置与动态调度,还包含用于跨集群资源查询和多集群服务发现的缓存层。它所处的更大生态还包括 Cluster API(专注于集群生命周期而非工作负载放置),以及像 Argo CD 的 ApplicationSets 和 Rancher Fleet 这样的 GitOps 工具。此外还有微软的 KubeFleet,它构成了 Azure Kubernetes Fleet Manager 的基础。
查看英文原文:Kubernetes Multi-Cluster Project Karmada Reaches CNCF Graduation





