Karmada v1.10 发布,新增多集群声明式负载重平衡
本文分享自华为云社区《Karmada v1.10 - 多集群声明式负载重平衡》,作者:云容器大未来。
Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力,Karmada 可以平滑迁移单集群工作负载,并且仍可保持与 Kubernetes 周边生态工具链协同。
在最新发布的v1.10版本中,Karmada新增了工作负载重平衡功能:在某些场景下,资源副本的当前分布状态可能不是最优,但调度器为了减少对系统的冲击会尽可能保持调度结果的惰性,不会轻易改变调度结果;此时,用户可以通过新引入的 WorkloadRebalancer API 针对指定的资源手动触发全新的重调度,以在集群间建立最优的副本状态分布。
本版本其他新增特性:
- 解除资源模板名称长度不能超过 63 个字符的限制
- 生产环境中的可用性和可靠性增强
新特性概览
Workload Rebalance
一般情况下,工作负载类资源一旦被调度,其调度结果通常会保持惰性,不会轻易改变副本分布状态。即使通过修改资源模板中的副本数或 PropagationPolicy
的 Placement
来触发重新调度,系统也只会在必要时进行最小化的调整,以最大程度地减少对系统的影响。
然而,在某些情况下,用户可能希望能够主动触发全新的重调度,完全忽略过去的分配结果,并在集群之间建立全新的副本分布状态,例如:
- 在主备集群模式下,由于主集群故障,应用被迁移至备集群,主集群恢复后,应用希望重新迁移至主集群。
- 在应用级别故障迁移场景下,由于集群资源不足,应用从多个集群缩减到单个集群,相应集群资源充足后,应用希望重新分发到多集群以确保高可用性。
- 对于聚合调度策略,由于资源限制,副本最初分布在多个集群中,当单个集群足以容纳所有副本后,应用希望重新聚合到单集群。
因此,本版本引入了工作负载重平衡功能,如果当前副本分布状态不是最优,用户可以按需触发全新的重调度。
例如,用户想触发 Deployment/foo
的重调度,只需声明下述 WorkloadRebalancer
资源:
apiVersion: apps.karmada.io/v1alpha1 kind: WorkloadRebalancer metadata: name: foo-rebalancer spec: workloads: - apiVersion: apps/v1 kind: Deployment name: foo namespace: default
然后,调度器将对该 Deployment
进行重调度。
1)如果成功,您将看到以下结果:
apiVersion: apps.karmada.io/v1alpha1 kind: WorkloadRebalancer metadata: name: foo-rebalancer generation: 1 creationTimestamp: "2024-05-22T11:16:10Z" spec: ... status: finishTime: "2024-05-22T11:16:10Z" observedGeneration: 1 observedWorkloads: - result: Successful workload: apiVersion: apps/v1 kind: Deployment name: foo namespace: default
Deployment/foo
的 ResourceBinding
不存在,您将得到以下结果: apiVersion: apps.karmada.io/v1alpha1 kind: WorkloadRebalancer metadata: name: foo-rebalancer generation: 1 creationTimestamp: "2024-05-22T11:16:10Z" spec: ... status: finishTime: "2024-05-22T11:16:10Z" observedGeneration: 1 observedWorkloads: - reason: ReferencedBindingNotFound result: Failed workload: apiVersion: apps/v1 kind: Deployment name: foo namespace: default
解除资源模板命名长度的限制
由于历史设计原因,资源模板的名称被用作 label
的值,从而加速资源的检索。由于 Kubernetes 限制标签 value
值不能超过 63 个字符,导致用户无法将名称长度超过 63 个字符的资源分发至成员集群中去,间接限制了资源模板名称的长度,严重阻碍了用户将工作负载从旧集群迁移到Karmada。
Karmada社区从 v1.8 版本起着手消除这一限制,并在 v1.8 和 v1.9 版本中做了充足的准备工作,以确保使用旧版本 Karmada 的用户可以平滑升级到当前新版本,而不用感知这一变化。
更多详情请参见 [Umbrella] 在资源中使用 permanent-id
替换 namespace/name
标签:https://github.com/karmada-io/karmada/issues/4711
生产环境中的可用性和可靠性增强
本版本融合了大量生产级用户的反馈,进行了大量功能性增强以及安全性提升,包括:
1)功能增强:
- 支持分发
kubernetes.io/service-account-token type
的Secret
资源 - 优化
PropagationPolicy
降低优先级时的优先级抢占逻辑 - 显著减少
karmada-metrics-adapter
组件的内存使用 - 优化了
karmada-webhook
的启动逻辑,消除了偶现的异常报错
2)安全增强:
- 将
google.golang.org/protobuf
从 1.31.0 升级到 1.33.0,以解决 CVE-2024-24786 漏洞问题 - 将 Karmada 证书的 RSA 密钥长度从 2048 升级到 3072,提高秘钥安全性
- 将
text/template
库替换为html/template
,增加 HTML 编码等安全保护功能 - 创建文件时由默认授予 0666 权限改为指定授予 0640 权限,提高文件安全性
- 采取必要措施以消除安全扫描工具的误报,如在使用
karmadactl
删除token
时调整日志打印内容和消除gosec
警告 G107 等
3)生态集成:
- 为 OpenKruise 中的
CloneSet
资源展示status.labelSelector
,以支持该资源的HPA扩缩容特性 - 在
karmadactl
添加成员集群时,新增支持 OIDC 认证模式
致谢贡献者
Karmada v1.10 版本包含了来自32位贡献者的356次代码提交,在此对各位贡献者表示由衷的感谢:
贡献者GitHub ID:
参考链接
[1]Release Notes:
[2]WorkloadRebalancer 指南:
[3]WorkloadRebalancer 示例教程:
[4]Karmada 1.10升级文档:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
重磅!首个跨平台的通用 Linux 端间互联组件 Klink 在 openKylin 开源
随着智能终端设备的普及,多个智能终端设备之间的互联互通应用场景日益丰富,多设备互联互通应用场景需要开发者单独实现通讯协议。因此,为解决跨平台互联互通问题,由openKylin社区理事单位麒麟软件旗下星光麒麟团队成立的Connectivity SIG经过研究探索,打造了一个跨平台的通用Linux端间互联组件—Klink。 一、什么是Klink Klink是由openKylin社区Connectivity SIG—星光麒麟团队于2021年开始打造的端间互联组件,解耦了软总线模块对多系统平台的应用,实现了对跨平台软总线协议的兼容,包括鸿蒙软总线4.x协议等,使包括openKylin开源操作系统、银河麒麟桌面操作系统等在内的各种主流Linux发行版皆可跨平台互联互通,大幅扩展了生态边界,为我国基础软件健康开放发展做出了贡献。其基本架构如下图所示: 二、Klink优势 openKylin社区理事单位麒麟软件“星光麒麟”万物智联操作系统,以“弹性扩展、智能互联、内生安全、统一框架”的产品特性,针对国家、行业、企业和个人数字化应用需求,开启了面向全场景的新一代操作系统创新之路。其中智能互联特性就是以...
- 下一篇
DeepSeek Coder V2 发布,首个击败 GPT-4 Turbo 的开源模型
DeepSeek-Coder-V2 已正式上线和开源,沿用 DeepSeek-V2 的模型结构,总参数 236B,激活 21B,在代码、数学的多个榜单上位居全球第二,介于最强闭源模型 GPT-4o 和 GPT-4-Turbo 之间。 开源模型包含236B和16B两种参数规模: DeepSeek-Coder-V2:总参 236B(即官网和 API 版模型),单机 8*80G 可部署,单机 8*80G 可微调(需要技巧) DeepSeek-Coder-V2-Lite:总参 16B,激活 2.4B,支持 FIM,代码能力接近 DeepSeek-Coder-33B(V1),单卡 40G 可部署,单机 8*80G 可训练。 模型下载:https://huggingface.co/deepseek-ai 代码仓库:https://github.com/deepseek-ai/DeepSeek-Coder-V2 技术报告:https://github.com/deepseek-ai/DeepSeek-Coder-V2/blob/main/paper.pdf 在拥有世界前列的代码、数学能力的同时,De...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库