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

举报
云容器大未来 发表于 2025/06/25 09:28:11 2025/06/25
【摘要】 Karmada v1.14 版本现已发布,本版本包含下列新增特性:新增联邦资源配额管理能力,用于多租户场景下资源治理、新增定制化污点管理能力,消除隐式集群故障迁移、Karmada Operator 功能持续演进、Karmada 控制器性能显著提升。

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

karmada.png

Karmada v1.14 版本[1] 现已发布,本版本包含下列新增特性:

  • 新增联邦资源配额管理能力,用于多租户场景下资源治理
  • 新增定制化污点管理能力,消除隐式集群故障迁移
  • Karmada Operator 功能持续演进
  • Karmada 控制器性能显著提升


 新 特 性 概 览 

联邦资源配额管理

在多租户的云基础设施中,配额管理是确保资源公平分配和防止超额使用的关键。尤其在多云多集群环境下,分散的配额系统往往导致资源监控困难和管理割裂,因此实现跨集群的联邦配额管理成为提升资源治理效率的核心要素。

此前,Karmada 通过 FederatedResourceQuota 将全局配额分配至成员集群,由各集群本地实施配额管控。本次版本升级增强了联邦配额管理能力,新增控制平面全局配额检查机制,支持直接在控制平面进行全局资源配额校验。

该功能特别适用于以下场景:

  • 您需要从统一位置跟踪资源消耗和限制,而无需关注集群级别的分配情况。
  • 您希望通过验证配额限制来避免超额的任务提交。

注意:该特性目前处于 Alpha 阶段,需要启用 FederatedQuotaEnforcement Feature Gate 才能使用。

假设您想设置总体 CPU 限制为 100,您可以按照如下配置进行定义:

apiVersion: policy.karmada.io/v1alpha1
kind: FederatedResourceQuota
metadata:
    name: team-foo
    namespace: team-foo
spec:
    overall:
        cpu: 100

一旦应用,Karmada 将开始监控和执行 test 命名空间的 CPU 资源限制。假设您应用了一个需要 20 个 CPU 的新 Deployment。联邦资源配额的状态将更新为如下所示:

spec:
   overall:
       cpu: 100
status:
   overall:
       cpu: 100
   overallUsed:
       cpu: 20

如果您应用的资源超过 100 个CPU的限制,该资源将不会被调度到您的成员集群。

有关此功能的详细用法,可以参考特性使用文档:Federated ResourceQuota[2]


定制化污点管理

在 v1.14 之前的版本中,当用户启用故障转移功能时,系统在检测到健康状态异常后会自动向集群添加一个 NoExecute effect 污点,从而触发目标集群上所有资源的迁移。

在这个版本中,我们对系统中潜在的迁移触发因素进行了全面审查。所有隐含的集群故障转移行为已被消除,并且引入了针对集群故障机制的明确约束条件。这使得因集群故障而引发的资源迁移能够得到统一管理,进一步增强了系统的稳定性和可预测性。

集群故障条件是通过评估出现故障的集群对象的状态条件来确定的,以便应用污点,这一过程可以称为“Taint Cluster By Conditions”。此版本引入了一个新的 API - ClusterTaintPolicy,它允许用户自定义规则,以便在预定义的集群状态条件得到满足时,为目标集群添加特定的污点。

2.png

对于更复杂的集群故障判断场景,用户可以直接实现一个自定义的“集群污点控制器”,以控制如何向集群对象添加或移除污点。

ClusterTaintPolicy 是一种 Cluster scope 资源,下面我们给一个简单的例子来说明它的用法:

apiVersion: policy.karmada.io/v1alpha1
kind: ClusterTaintPolicy
metadata:
     name: detect-cluster-notready
spec:
    targetClusters:
       clusterNames:
       - member1
       - member2
     addOnConditions:
     - conditionType: Ready
        operator: NotIn
        statusValues:
        - "True"
    - conditionType: NetworkAvailable
       operator: NotIn
       statusValues:
       - "True"
    removeOnConditions:
    - conditionType: Ready
       operator: In
       statusValues:
       - "True"
    - conditionType: NetworkAvailable
       operator: In
       statusValues:
       - "True"
    taints:
    - key: not-ready
       effect: NoSchedule
    - key: not-ready
       effect: NoExecute

上面的例子描述了一个针对 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 次代码提交,在此对各位贡献者表示由衷的感谢:

贡献者列表:

3.png

4.png

相关链接

[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小助手.png

添加社区小助手k8s2222

回复Karmada进入技术交流群


Karmada官网:https://karmada.io/

项目地址:https://github.com/karmada-io/karmada

Slack地址:https://slack.cncf.io/(#karmada)

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。