Karmada 多云容器编排引擎支持多调度组,助力成本优化!
【摘要】 Karmada 社区也在持续关注云成本的管理,在最近发布的 v1.5 版本中,支持用户在分发策略 PropagationPolicy/ClusterPropagationPolicy 中设置多个集群调度组,实现将业务调度到成本更低的集群组中去。
作者:华为云云原生团队
根据 Flexera 最新发布的《2023 年云现状调查报告》,在受访的750家企业中,使用多云的企业比例高达87%:
在使用多云的受访者中,排在前两位的多云挑战分别是:孤立在不同云上的应用程序和云之间的灾难恢复/故障切换。在所有组织中,最常用的多云工具是安全工具,紧随其后的是成本优化(Finops)工具。
此外,云成本的管理取代了安全性话题,成为当下云使用者面临的首要问题:
Karmada 社区也在持续关注云成本的管理,在最近发布的 v1.5 版本中,支持用户在分发策略 PropagationPolicy/ClusterPropagationPolicy
中设置多个集群调度组,实现将业务调度到成本更低的集群组中去。
多调度组
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
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"`
}
云成本管理使用场景
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
Deployment/nginx
时,会优先尝试调度到本地集群组中的集群,如果失败(如缺乏资源),则继续选择云上集群组,从而实现在本地集群资源足够时,优先选择成本更低的本地集群的目标。
容灾与迁移场景
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
Deployment/nginx
时,如果主集群组满足要求,会调度到主集群组中的 member1
集群,当member1
集群故障时,调度器按顺序匹配新集群组,从而将业务迁移到备份集群组中的member2
上,这样就达成了容灾的目的。
总结
附:Karmada社区交流地址
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)