Karmada v1.5发布:多调度组助力成本优化

摘要:在最新发布的1.5版本中,Karmada 提供了多调度组的能力,利用该能力,用户可以实现将业务优先调度到成本更低的集群,或者在主集群故障时,优先迁移业务到指定的备份集群。

本文分享自华为云社区《Karmada v1.5发布!多调度组助力成本优化》,作者:华为云云原生团队。

Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力,Karmada 可以平滑迁移单集群工作负载,并且仍可保持与 Kubernetes 周边生态工具链协同。在最新发布的1.5版本中,Karmada 提供了多调度组的能力,利用该能力,用户可以实现将业务优先调度到成本更低的集群,或者在主集群故障时,优先迁移业务到指定的备份集群。

Karmada v1.5发布:多调度组助力成本优化

本版本其他新增特性:

  • 提供了多调度器支持能力,默认调度器可以与第三方自定义调度器协同工作,提供更强的定制能力。
  • 集群差异化配置策略(OverridePolicy/ClusterOverridePolicy)将按照隐式的优先级进行应用。
  • 内置资源解释器支持聚合StatefulSet/CronJob 状态。

新特性概览

多调度组

根据 Flexera 发布的《2023 年云现状调查报告》,云成本的管理取代了安全性话题,成为当下云使用者面临的首要问题。

Karmada v1.5发布:多调度组助力成本优化

Karmada 秉承这一趋势,同样关注云成本管理。从v1.5版本开始,用户可以在 PropagationPolicy/ClusterPropagationPolicy 中设置多个集群组,实现将业务优先调度到成本更低的集群组。下面我们给出一个针对成本优化进行调度的例子:

apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: nginx
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: nginx
  placement:
    clusterAffinities:
      - affinityName: local-clusters
        clusterNames:
          - local-member1
          - local-member2
      - affinityName: cloud-clusters
        clusterNames:
          - huawei-member1
          - huawei-member2

上面的例子配置有本地集群组(local-clusters)和云上集群组(cloud-clusters),Karmada 在选择集群组进行资源分发时, 将按顺序对集群组逐一进行评估,直到找到满足调度约束的集群组。所以在调度Deployment/nginx时,会优先尝试调度到本地集群组的local-member1和local-member2,如果失败(如资源不足),则选择云上集群组,从而实现在本地集群资源足够时,优先选择成本更低的本地集群。基于此,系统管理员也可以定义主集群组和备份集群组,在主集群组故障时,将业务往备份集群组的集群迁移。下面我们给出一个针对容灾迁移的例子:

apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: nginx
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: nginx
  placement:
    clusterAffinities:
      - affinityName: primary-cluster
        clusterNames:
          - member1
      - affinityName: backup-cluster
        clusterNames:
          - member2

上面的例子通过配置主群组(primary-cluster)和备份集群组(backup-cluster),在调度 Deployment/nginx 时,如果主集群组满足要求,会调度到主集群组的member1。在主集群组的集群故障时,调度器按顺序匹配新集群组,将业务迁移到备份集群组的member2。

关于多调度组更多信息,请参考:https://github.com/karmada-io/karmada/tree/master/docs/proposals/scheduling/multi-scheduling-group

自定义调度器

Karmada 默认调度器内置多款可灵活配置的插件,可以满足大部分使用场景,用户还可以使用插件扩展机制来实现个性化调度诉求。Karmada 1.5版本提供了多调度器支持能力,Karmada 默认调度器可以与第三方自定义调度器协同工作,以提供更强的定制能力。用户可以参考默认调度器实现自定义调度器,当多个调度器共存时,需通过命令行启动参数指定调度器名称,如 --scheduler-name=my-scheduler 。如果自定义调度器与默认调度器部署在同一namespace中,建议同时配置 --leader-elect-resource-name 参数,以避免副本选主冲突。关键命令行启动参数如下所示:

command:
  - /bin/karmada-scheduler
  - --kubeconfig=/etc/kubeconfig
  - --bind-address=0.0.0.0
  - --secure-port=10351
  - --enable-scheduler-estimator=true
  - --leader-elect-resource-name=my-scheduler # 你的自定义调度器名称
  - --scheduler-name=my-scheduler # 你的自定义调度器

通过参数 --scheduler-name 将多个调度器进行区分,每个调度器将只负责调度特定的工作负载。通过 Karmada 分发工作负载时,可以在 PropagationPolicy/ClusterPropagationPolicy 的 schedulerName 字段指定调度器名字,如下所示:

apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
 name: nginx-propagation
spec:
 schedulerName: my-scheduler
 resourceSelectors:
   - apiVersion: apps/v1
     kind: Deployment
     name: nginx
 placement:
   clusterAffinity:
     clusterNames:
       - member1
       - member2

上例通过 schedulerName 指定此Deployment必须由名为 my-scheduler 的调度器进行调度,此时默认调度器将自动忽略该工作负载。schedulerName 如果没有指定,则默认值为 default-scheduler ,意味着由默认调度器进行调度,前面版本的用户升级到新版本时无需额外配置。关于如何扩展调度器插件和实现自定义调度器,请查看官方文档:https://karmada.io/docs/developers/customize-karmada-scheduler/

版本升级

Karmada v1.5版本API兼容v1.4版本API,v1.4版本的用户仍然可以平滑升级到v1.5版本。可参考升级文档:https://karmada.io/docs/administrator/upgrading/v1.4-v1.5

致谢贡献者

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

贡献者GitHub ID:

@a7i@calvin0327@carlory@chaunceyjiang@fengshunli@Fish-pro@Garrybest@helen-frank@ikaven1024@jwcesign@lonelyCZ@maoyangLiu@my-git9@Poor12@qingwave@RainbowMango@VedRatan@Wang-Kai@whitewindmills@wlp1153468871@wongearl@XiShanYongYe-Chang@yanfeng1992@yanggangtony@Zhuzhenghao

参考链接

  • Release Notes:https://github.com/karmada-io/karmada/releases/tag/v1.5.0

  • 多调度组:https://github.com/karmada-io/karmada/tree/master/docs/proposals/scheduling/multi-scheduling-group

  • 2023 年云现状调查报告:https://info.flexera.com/CM-REPORT-State-of-the-Cloud

  • 扩展调度器插件和实现自定义调度器:https://karmada.io/docs/developers/customize-karmada-scheduler/

附:Karmada社区技术交流地址

 

点击关注,第一时间了解华为云新鲜技术~

原文链接:https://www.cnblogs.com/huaweiyun/p/17332586.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Karmada v1.5发布:多调度组助力成本优化 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月19日

相关文章

  • linux云计算集群架构学习笔记:rhel7基本命令操作

     1-3-RHEL7基本命令操作 1.1Linux终端介绍 Shell提示符 Bash Shell基本语法。 1.2基本命令的使用:ls、pwd、cd。 1.3查看系统和BIOS硬件时间。 1.4 Linux如何获得帮助,Linux关机命令:shutdown、init等。 1.5 Linux 7个启动级别,设置服务器在来电后自动开机。 单词整理: Termi…

    云计算 2023年4月13日
    00
  • 云计算——云服务器ECS(2)

    一、ECS的产品优势 与普通的IDC(integrated data center)机房或服务器厂商相比,阿里云提供的云服务器ECS的优势: 高可用性     提升可用性的产品和服务,包括云服务器ECS,负载均衡SLB,关系型数据库RDS以及数据迁移服务DTS等     行业伙伴以及生态合作伙伴,可以完成更稳定的架构,并且保证服务的持续性     多种多样的…

    云计算 2023年4月12日
    00
  • 什么是OpenStack 开源的云计算管理平台项目

    什么是OpenStack 开源的云计算管理平台项目 OpenStack是一个开源的云计算管理平台项目,它提供了一系列的云计算服务,包括计算、存储、网络和身份验证等。OpenStack可以用于构建公有云、私有云和混合云等,它提供了一系列API,可以帮助用户管理和部署计算资源,例如虚拟机、存储和网络等。 OpenStack的组成 OpenStack由以下几个核心…

    云计算 2023年5月16日
    00
  • 降本超30%,智聆口语通过 TKE 注册节点实现 IDC GPU 节点降本增效实践

    背景介绍 腾讯云智聆口语评测(Smart Oral Evaluation,SOE)是腾讯云推出的中英文语音评测产品,支持从儿童到成人全年龄覆盖的语音评测,提供单词、句子、段落、自由说等多种评测模式,从发音精准度、流利度、完整度等全方位打分机制,与专家打分相似度达 95% 以上,可广泛应用于中英文口语教学场景中。 在降本增效的大环境下,业务积极寻求成本更优的解…

    云计算 2023年4月13日
    00
  • 云计算(虚拟化)

    目录 1.1 云计算 1.2 虚拟机、云主机、VPS 三者之间的区别 1.3 厂商介绍 1.4 框架 1.5 常见技术 1.1 云计算 云计算?这个词并不陌生,一句话“将硬件虚拟化,将服务部署在云端”。用Docker可以更加贴切的形容这一过程。我们以往的软件服务大多数都是搭建在自己的机器上去Run和Test。Docker的一种想法就是将软件服务程序全部部署在…

    云计算 2023年4月12日
    00
  • C#实现滑动开关效果

    C#实现滑动开关效果 滑动开关是一种常见的用户界面控件,它通常用于开关某些功能或选项。在C#中,我们可以使用Windows Forms或WPF来实现滑动开关效果。本文将提供一个完整攻略,包括如何在Windows Forms和WPF中实现滑动开关效果,并提供两个示例说明。 Windows Forms 在Windows Forms中,我们可以使用TrackBar…

    云计算 2023年5月16日
    00
  • ASP.NET中Web API的参数绑定

    Web API是ASP.NET框架中的一个重要组件,用于构建RESTful风格的Web服务。在Web API中,参数绑定是产生重要影响的一个概念,因为它关系到开发人员在控制器中访问请求参数的方式。本篇文章将为大家讲解ASP.NET中Web API的参数绑定的完整攻略。 什么是参数绑定? 在Web API中,参数绑定是指将HTTP请求中传递的参数映射到控制器中…

    云计算 2023年5月17日
    00
  • Python爬虫实战JS逆向AES逆向加密爬取

    “Python爬虫实战JS逆向AES逆向加密爬取”是一篇介绍如何通过Python爬虫从加密的网站数据中提取信息的文章。下面是这篇文章的完整攻略。 简介 为了防止信息被非法访问,很多网站采用了加密技术来保护数据。加密技术常见的有AES加密和加盐加密。如果我们想要爬取这些网站的数据,就需要解密这些加密数据。 本文将介绍如何通过使用Python爬虫及JS逆向工具,…

    云计算 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部