Karmada 多云容器编排引擎支持多调度组,助力成本优化

摘要:Karmada 社区也在持续关注云成本的管理,在最近发布的 v1.5 版本中,支持用户在分发策略 PropagationPolicy/ClusterPropagationPolicy 中设置多个集群调度组,实现将业务调度到成本更低的集群组中去。

本文分享自华为云社区《Karmada 多云容器编排引擎支持多调度组,助力成本优化!》,作者:华为云云原生团队

根据 Flexera 最新发布的《2023 年云现状调查报告》,在受访的750家企业中,使用多云的企业比例高达87%:

Karmada 多云容器编排引擎支持多调度组,助力成本优化

在使用多云的受访者中,排在前两位的多云挑战分别是:孤立在不同云上的应用程序和云之间的灾难恢复/故障切换。在所有组织中,最常用的多云工具是安全工具,紧随其后的是成本优化(Finops)工具。

此外,云成本的管理取代了安全性话题,成为当下云使用者面临的首要问题:

Karmada 多云容器编排引擎支持多调度组,助力成本优化

Karmada 社区也在持续关注云成本的管理,在最近发布的 v1.5 版本中,支持用户在分发策略 PropagationPolicy/ClusterPropagationPolicy 中设置多个集群调度组,实现将业务调度到成本更低的集群组中去。

多调度组

Karmada 的PropagationPolicy 支持声明单组集群,即.spec.placement.clusterAffinity,其 YAML 配置示例为:

apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
 name: nginx
spec:
 resourceSelectors:
 - apiVersion: apps/v1
 kind: Deployment
 name: nginx
 placement:
 clusterAffinitiy:
 - clusterNames:
 - member1
 - member2

Karmada v1.5 版本中,clusterAffinity 向 karmada-scheduler 提供一组候选集群,karmada-scheduler 根据相关限制(例如 spreadConstraint,插件过滤等)在候选集群之间做出调度决策,调度结果要么成功,要么失败。多调度组支持用户设置ClusterAffinities字段,在 PropagationPolicy 中声明多组集群,karmada-scheduler 可以依次来评估每个 clusterAffinity,进而做出决策。此功能允许 Karmada 调度程序在集群故障时首先将应用程序调度到低成本集群组,或将应用程序从主集群迁移到备份集群。

// Placement represents the rule for select clusters.
type Placement struct {
 // ClusterAffinities 表示对 ClusterAffinityTerm 指示的多个集群组的调度限制。
      // 调度程序将按照这些组在规范中出现的顺序逐个评估,不满足调度限制的组将被忽略,
      // 这意味着除非该组中的所有集群也属于下一个组(同一集群可以属于多个组),
      // 否则将不会选择此组中的所有集群。
      // 如果没有一个组满足调度限制,则调度失败,这意味着不会选择集群。
      // 注:ClusterAffinities 不能与 ClusterAffinity 共存。
      // 如果未同时设置 ClusterAffinities 和 ClusterAffinity,则任何集群都可以作为调度候选集群。
 //
 // +optional
 ClusterAffinities []ClusterAffinityTerm `json:"clusterAffinities,omitempty"`
}
// ClusterAffinityTerm selects a set of cluster.
type ClusterAffinityTerm struct {
 // AffinityName 是集群组的名称.
 // +required
 AffinityName string `json:"affinityName"`
 ClusterAffinity `json:",inline"`
}

云成本管理使用场景

用户可以使用多调度组来进行云成本的管理,例如:本地数据中心中的私有集群是主集群组,集群提供商提供的托管集群可以是辅助集群组,因此,Karmada 调度程序更愿意将工作负载调度到主集群组,只有在主集群组不满足限制(如缺乏资源)的情况下,才会考虑辅助集群组。下面我们给出一个针对成本优化进行调度的例子:

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 时,会优先尝试调度到本地集群组中的集群,如果失败(如缺乏资源),则继续选择云上集群组,从而实现在本地集群资源足够时,优先选择成本更低的本地集群的目标。

容灾与迁移场景

对于灾难恢复场景,系统管理员也可以定义主集群组备份集群组,工作负载将首先调度到主集群组,当主集群组中的集群发生故障(如数据中心断电)时,Karmada 调度程序可以将工作负载迁移到备份集群组

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 集群,当member1 集群故障时,调度器按顺序匹配新集群组,从而将业务迁移到备份集群组中的member2 上,这样就达成了容灾的目的。

总结

支持多调度组设置为用户提供了更丰富的多集群资源分发策略选择,Karmada 后续也会继续探索云成本的管理,大家有任何感兴趣的想法,都欢迎大家来 Karmada 社区进行讨论与分享。

附:Karmada社区交流地址

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

Slack地址:https://slack.cncf.io/

 

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

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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Karmada 多云容器编排引擎支持多调度组,助力成本优化 - Python技术站

(0)
上一篇 2023年4月20日
下一篇 2023年4月22日

相关文章

  • python适合做数据挖掘吗

    当然可以。Python是一种流行的编程语言,尤其在数据科学和机器学习领域得到了广泛的应用。以下是Python适合做数据挖掘的完整攻略。 1. Python是数据科学的首选语言 Python是一种易于学习且高度可扩展的编程语言,它在数据科学和机器学习领域非常流行。它的生态系统非常丰富,包括数据可视化、统计分析、机器学习、人工智能等库和框架。使用Python进行…

    云计算 2023年5月18日
    00
  • Python实现的大数据分析操作系统日志功能示例

    安装Python相关库和工具 首先,我们需要安装Python及其相关的数据分析库和工具。本次示例中,我们需要的是pandas、numpy、matplotlib和seaborn这些库。如果你之前没有安装过这些库,可以采用以下命令进行安装: pip install pandas numpy matplotlib seaborn 加载日志数据 我们下载了一个名为”…

    云计算 2023年5月18日
    00
  • Python 数据分析教程探索性数据分析

    Python 数据分析教程探索性数据分析 简介 探索性数据分析(Exploratory Data Analysis, EDA),是一种对数据进行初步分析的方法。其目的是发现数据的规律、异常和缺陷,为后续的分析或建模提供依据。Python 是数据分析和科学计算的热门语言,拥有丰富的数据分析库和工具。本教程将介绍 Python 中的一些常见 EDA 技术与工具,…

    云计算 2023年5月18日
    00
  • ASP.NET 上传文件到共享文件夹的示例

    下面我将详细讲解ASP.NET上传文件到共享文件夹的完整攻略,包含基本原理和代码实现。 基本原理 在ASP.NET中实现上传文件到共享文件夹的过程,需要使用到C#中提供的File类和Path类。File类提供了在文件系统中创建、复制、删除、移动和打开文件的静态方法,这些方法可直接使用而不必创建File类的实例。Path类则提供了用于处理路径字符串的方法。我们…

    云计算 2023年5月17日
    00
  • 阿里云研究中心招聘:云计算研究

    【阿里云研究中心招聘:云计算研究(高级)专家】BU/部门:阿里云研究中心工作地点:北京市工作年限:五年以上学历:硕士及以上简历投递:Ben.tf@alibaba-inc.com 岗位描述:1、研究国内外云计算技术、产业、政策与法律;2、完成云计算领域不同课题的研究报告,研究云计算应用案例,分析云安全、自主可控、云指数产品、智慧城市;3、负责部门内外相关的支持…

    云计算 2023年4月11日
    00
  • 支持Ajax跨域访问ASP.NET Web Api 2(Cors)的示例教程

    以下是详细的攻略: 1. CORS(跨域资源共享)的概述 在Web开发中,跨域访问是很常见的需求,比如,同源策略会限制浏览器跨域访问。CORS就是一种机制,它可以让Web服务器能够支持跨域访问,以使得Web应用程序能够更好的响应客户端请求。 CORS是通过设置HTTP响应头来支持的,示例代码如下: Access-Control-Allow-Origin: *…

    云计算 2023年5月17日
    00
  • 分享五个超实用Python脚本,减少垃圾软件负担

    首先,要明确的是Python脚本是一种文本文件,其中包含Python程序的代码。这些脚本可以通过Python解释器执行,以完成各种任务。下面将介绍五个超实用的Python脚本,可以帮助减轻计算机负担,减少垃圾软件的运行,提高计算效率。 脚本1:文件批量重命名 当你需要批量修改文件名时,手动一个一个修改是非常麻烦的。这个问题可以通过Python脚本来解决。以下…

    云计算 2023年5月18日
    00
  • 云技术入门指导:什么是云计算技术,云技术用什么语言开发 – 咖啡猫1292

    云技术入门指导:什么是云计算技术,云技术用什么语言开发 云计算技术:这里只是列出我所知道的,希望大家对云计算技术有所了解:一首先让大家明白什么是云端,所谓云端需要两层理解(1)服务不在本地,这一层可以理解为服务器(2)它和普通的服务器是不一样的,这些云端的服务器的资源是共享的,一旦一个服务器不能承受,将会把任务分配给其他机器。二、云技术与其他技术的区别:云技…

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