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

yizhihongxing

摘要: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日

相关文章

  • 【读书笔记】计算广告学-网易云课堂

    《计算广告学》 http://study.163.com/course/courseMain.htm?courseId=321007   书籍已下载,位置在: /Users/baidu/Documents/Data/Interview/计算广告/  

    云计算 2023年4月13日
    00
  • 云计算初体验(三)之租户登录、验证、授权

      在云计算平台,租户可以随时租用平台上所提供的服务,但这里面却存在一个隐藏的问题,登录验证怎么做?      我当时的第一反应是每个服务自己提供一套登录验证体系。但是随之而来的问题是,每次添加服务,租户下属成员,每次都需要重新申请登录名?同时用户为什么在使用其他服务时还需要再次登录?为什么需要这么麻烦呢?为什么不能做到新增、更改服务,对租户和其下属成员来说…

    云计算 2023年4月11日
    00
  • 如何使用签名保证ASP.NET MVC OR WEBAPI的接口安全

    使用签名可以保证ASP.NET MVC OR WEBAPI的接口安全,以下是完整攻略的步骤: 步骤一:生成API密钥 API密钥是用来保密签名密钥的,所以必须是长而复杂的随机字符串。可以使用Guid.NewGuid().ToString()方法生成一个符合要求的API密钥。 步骤二:生成签名密钥 签名密钥也必须是随机的,并且应该远离API密钥。可以通过使用G…

    云计算 2023年5月17日
    00
  • 云计算的优势和劣势

    云计算的优势和劣势   任何一件事物都有利弊之分,云计算更不例外了,所以我们不能对它一概而论,只有充分的认识到这些优势和劣势之后才能更好的做出决断。也许你可以称它是一场比WEB 2.0还要巨大的革命;也许你也可以称它和当初AJAX一样,属概念炒作、新瓶装旧酒;不管如何,没有深入虎穴焉得虎子,那么下面我们就具体分析一下它到底有哪些优势和劣势。 优势或值得应用的…

    云计算 2023年4月12日
    00
  • OpenStack初始化浅析

    OpenStack初始化浅析 OpenStack是一个开源的云计算平台,可以用于构建公有云、私有云和混合云等多种云计算环境。在使用OpenStack之前,需要进行初始化配置,以确保OpenStack的正常运行。下面是一些OpenStack初始化的攻略。 1. 安装OpenStack 在进行OpenStack初始化之前,需要先安装OpenStack。OpenS…

    云计算 2023年5月16日
    00
  • 智学网怎么看年级排名 智学网app特色介绍

    下面是关于 “智学网怎么看年级排名 智学网app特色介绍” 的完整攻略: 一、智学网怎么看年级排名 智学网是一款学生学习辅助app,为学生提供了许多个人学习管理服务。其中,年级排名就是智学网一大特色功能之一。 要查看年级排名,需要打开智学网app,并登录账号。 打开app,在底部找到“我的”页面; 进入“我的”页面后,在页面中间找到“年级排名”选项,点击进入…

    云计算 2023年5月17日
    00
  • Python Ajax爬虫案例分享

    Python Ajax爬虫案例分享 前言 在 Web 开发中,Ajax 技术已经非常普遍,接下来我将分享如何使用 Python 编写爬取 Ajax 技术的网站数据的爬虫。 爬虫的基础知识 在开始编写爬虫之前,你需要了解以下基础知识: requests 库:一个用于发送 HTTP/1.1 请求的 Python 库,可以让我们访问 Web 站点的内容。 Beau…

    云计算 2023年5月18日
    00
  • 关于.net环境下跨进程、高频率读写数据的问题

    下面是关于“.NET环境下跨进程、高频率读写数据的问题”的完整攻略,包含两个示例说明。 简介 在.NET环境下,跨进程、高频率读写数据是一个常见的问题。在本攻略中,我们将介绍如何在.NET环境下解决这个问题,以确保数据的正确性和可靠性。 步骤 在.NET环境下,我们可以通过以下步骤来解决跨进程、高频率读写数据的问题: 使用共享内存来存储数据。 使用互斥锁来保…

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