Karmada v1.14 版本发布!新增联邦资源配额管理能力

Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力,Karmada 可以平滑迁移单集群工作负载,并且仍可保持与 Kubernetes 周边生态工具链协同。

Karmada v1.14 版本[1] 现已发布,本版本包含下列新增特性:
新增联邦资源配额管理能力,用于多租户场景下资源治理
新增定制化污点管理能力,消除隐式集群故障迁移
Karmada Operator 功能持续演进
Karmada 控制器性能显著提升
新 特 性 概 览
▍联邦资源配额管理
在多租户的云基础设施中,配额管理是确保资源公平分配和防止超额使用的关键。尤其在多云多集群环境下,分散的配额系统往往导致资源监控困难和管理割裂,因此实现跨集群的联邦配额管理成为提升资源治理效率的核心要素。
此前,Karmada 通过 FederatedResourceQuota 将全局配额分配至成员集群,由各集群本地实施配额管控。本次版本升级增强了联邦配额管理能力,新增控制平面全局配额检查机制,支持直接在控制平面进行全局资源配额校验。
该功能特别适用于以下场景:
您需要从统一位置跟踪资源消耗和限制,而无需关注集群级别的分配情况。
您希望通过验证配额限制来避免超额的任务提交。
注意:该特性目前处于 Alpha 阶段,需要启用 FederatedQuotaEnforcement Feature Gate 才能使用。
假设您想设置总体 CPU 限制为 100,您可以按照如下配置进行定义:
一旦应用,Karmada 将开始监控和执行 test 命名空间的 CPU 资源限制。假设您应用了一个需要 20 个 CPU 的新 Deployment
。联邦资源配额的状态将更新为如下所示:
如果您应用的资源超过 100 个 CPU 的限制,该资源将不会被调度到您的成员集群。
有关此功能的详细用法,可以参考特性使用文档:Federated ResourceQuota[2]。
▍定制化污点管理
在 v1.14 之前的版本中,当用户启用故障转移功能时,系统在检测到健康状态异常后会自动向集群添加一个 NoExecute effect 污点,从而触发目标集群上所有资源的迁移。
在这个版本中,我们对系统中潜在的迁移触发因素进行了全面审查。所有隐含的集群故障转移行为已被消除,并且引入了针对集群故障机制的明确约束条件。这使得因集群故障而引发的资源迁移能够得到统一管理,进一步增强了系统的稳定性和可预测性。
集群故障条件是通过评估出现故障的集群对象的状态条件来确定的,以便应用污点,这一过程可以称为“Taint Cluster By Conditions”。此版本引入了一个新的 API - ClusterTaintPolicy,它允许用户自定义规则,以便在预定义的集群状态条件得到满足时,为目标集群添加特定的污点。

对于更复杂的集群故障判断场景,用户可以直接实现一个自定义的“集群污点控制器”,以控制如何向集群对象添加或移除污点。
ClusterTaintPolicy 是一种 Cluster scope 资源,下面我们给一个简单的例子来说明它的用法:
上面的例子描述了一个针对 member1 和 member2 集群的 ClusterTaintPolicy 资源,当集群的状态条件同时满足 Type 为 Ready 和 NetworkAvailable 的 condition value 不等于 True 时,会为目标集群添加污点 {not-ready:NoSchedule} 与 {not-ready:NoExecute};当集群的状态条件同时满足 Type 为 Ready 和 NetworkAvailable 的 condition value 等于 True 时,会移除目标集群上的污点 {not-ready:NoSchedule} 和 {not-ready:NoExecute}。
有关此功能的详细用法,可以参考特性使用文档:集群污点管理[3]。
▍Karmada Operator 功能持续演进
本版本持续增强 Karmada Operator,新增以下功能:
支持配置 Leaf 证书有效期。
支持 Karmada 控制平面暂停调谐。
支持为 karmada-webhook 组件配置 feature gates。
支持为 karmada-apiserver 组件执行 loadBalancerClass 以选择特定的负载均衡实现。
引入 karmada_build_info 指标来展示构建信息,以及一组运行时指标。
这些改进使得 karmada-operator 更加灵活且可定制,提高了整个 Karmada 系统的可靠性和稳定性。
▍Karmada 控制器性能显著提升
自 1.13 版本发布以来,Karmada adopters 自发组织起来对 Karmada 性能进行优化。如今,一个稳定且持续运作的性能优化团队 SIG-Scalability 已经组建,致力于提升 Karmada 的性能与稳定性。感谢所有参与者付出的努力。如果大家有兴趣,随时欢迎大家加入。
在本次版本中,Karmada 实现了显著的性能提升,尤其是在 karmada-controller-manager 组件中。为验证这些改进,实施了以下测试设置:
测试设置包括 5000 个 Deployment,每个 Deployment 都与一个相应的 PropagationPolicy 配对,该策略将其调度到两个成员集群。每个 Deployment 还依赖一个唯一的 ConfigMap,它会与 Deployment 一起分发到相同的集群。这些资源是在 karmada-controller-manager 组件离线时创建的,这意味着在测试期间 Karmada 首次对它们进行同步。测试结果如下:
冷启动时间(清空工作队列)从约 7 分钟缩短至约 4 分钟,提升了 45%。
资源检测器:平均处理时间的最大值从 391 毫秒降至 180 毫秒(提升了 54%)。
依赖分发器:平均处理时间的最大值从 378 毫秒降至 216 毫秒(提升了 43%)。
执行控制器:平均处理时间的最大值从 505 毫秒降至 248 毫秒(提升了 50%)。
除了更快的处理速度,资源消耗也显著降低:
CPU 使用率从 4 - 7.5 核降至 1.8 - 2.4 核(降幅 40% - 65%)。
内存峰值使用量从 1.9 GB 降至 1.47 GB(降幅 22%)。
这些数据证明,在 1.14 版本中,Karmada 控制器的性能得到了极大提升。未来,我们将继续对控制器和调度器进行系统性的性能优化。
相关的详细测试报告,请参考 [Performance] Overview of performance improvements for v1.14[4] 。
致 谢 贡 献 者
Karmada v1.14 版本包含了来自 30 位贡献者的 271 次代码提交,在此对各位贡献者表示由衷的感谢:
贡献者列表:


相关链接
[1] Karmada v1.14 版本: https://github.com/karmada-io/karmada/releases/tag/v1.14.0
[2] Federated ResourceQuota: https://karmada.io/zh/docs/userguide/bestpractices/federated-resource-quota/
[3] 集群污点管理: https://karmada.io/docs/next/userguide/failover/cluster-taint-management/
[4] [Performance] Overview of performance improvements for
v1.14: https://github.com/karmada-io/karmada/issues/6394
Karmada 是 CNCF 首个多云多集群容器编排项目(孵化级),旨在帮助用户像使用单个集群一样轻松管理跨云多集群,让基于 Karmada 的多云方案无缝融入云原生技术生态。社区吸引了来自华为、道客、浙江大学、腾讯、中国电子云、滴滴、Zendesk、携程等 100 多家公司的全球贡献者,广泛分布于 20+国家和地区。Karmada 现已在华为云、道客、兴业数金、中国移动、中国联通、携程、360 集团、新浪、中通快递等众多企业单位生产应用,为企业提供从单集群到多云架构的平滑演进方案。
Karmada 官网:https://karmada.io/
项目地址:https://github.com/karmada-io/karmada
Slack 地址:https://slack.cncf.io/(#karmada)
评论