Karmada v1.10 - 多集群声明式负载重平衡

举报
云容器大未来 发表于 2024/06/17 09:18:03 2024/06/17
【摘要】 在最新发布的v1.10版本中,Karmada新增了工作负载重平衡等功能。

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

在最新发布的v1.10版本中,Karmada新增了工作负载重平衡功能:在某些场景下,资源副本的当前分布状态可能不是最优,但调度器为了减少对系统的冲击会尽可能保持调度结果的惰性,不会轻易改变调度结果;此时,用户可以通过新引入的 WorkloadRebalancer API 针对指定的资源手动触发全新的重调度,以在集群间建立最优的副本状态分布。

karmada.png


本版本其他新增特性:

  • 解除资源模板名称长度不能超过 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
2)如果失败,例如 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
有关此功能的详细描述,请参见用户指南:https://karmada.io/zh/docs/next/userguide/scheduling/workload-rebalancer

解除资源模板命名长度的限制

由于历史设计原因,资源模板的名称被用作 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 为用户带来更好的体验!

致谢贡献者

Karmada v1.10 版本包含了来自32位贡献者的356次代码提交,在此对各位贡献者表示由衷的感谢:

贡献者GitHub ID:

@a7i @Jay179-sudo @veophi
@Affan-7 @jwcesign @wangxf1987
@B1F030 @khanhtc1202 @warjiang
@calvin0327 @laihezhao @whitewindmills
@chaosi-zju @liangyuanpeng @wzshiming
@chaunceyjiang @my-git9 @XiShanYongYe-Chang
@dzcvxe @RainbowMango @yanfeng1992
@Fish-pro @Ray-D-Song @yike21
@grosser @rohit-satya @yizhang-zen
@guozheng-shen @seanlaii @zhzhuang-zju
@hulizhe @stulzq


参考链接

[1]Release Notes: https://github.com/karmada-io/karmada/releases/tag/v1.10.0

[2]WorkloadRebalancer 指南: https://karmada.io/zh/docs/userguide/scheduling/workload-rebalancer

[3]WorkloadRebalancer 示例教程: https://karmada.io/zh/docs/tutorials/workload-rebalancer

[4]Karmada 1.10升级文档: https://karmada.io/docs/administrator/upgrading/v1.9-v1.10

容器魔方公众号.jpg

更多云原生技术动向

关注容器魔方

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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