华为云云容器引擎CCE | Volcano调度篇:节点池亲和性调度
华为云云容器引擎CCE支持多种资源与任务调度策略,有助于提升应用性能和集群整体资源利用率,CPU资源调度、GPU/NPU异构资源调度以及Volcano调度的主要功能。本系列文章将介绍Volcano调度在华为云云容器引擎CCE中的运用。
Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力。

在华为云云容器引擎CCE使用Volcano的调度中,在替换节点池、节点滚动升级等场景,需要使用新节点池替换旧节点池。在这些场景下,为做到业务不感知,可以在业务触发变更时,将业务的Pod软亲和调度到新的节点池上。这种软亲和调度会尽量将新创建的Pod或者重调度的Pod调度到新的节点池,如果新节点池资源不足,或者新节点池无法调度,也要能将Pod调度到旧节点池上。节点池替换、节点滚动升级等场景中,业务不需要也不应该感知,所以不会在业务负载中声明节点亲和配置,而需要在集群调度层面,使用软亲和方式,在业务变更时将Pod尽量调度到新的节点池上。
Volcano的目标是在业务负载未配置节点软亲和时,在调度层将业务的Pod软调度到指定节点上。
调度优先级介绍
节点池软亲和调度,是通过节点池上的标签(Label)进行软亲和,具体是通过给每一个节点进行打分的机制来排序筛选最优节点。
📝 原则:尽可能把Pod调度到带有相关标签的节点上。
🔍 打分公式如下:score = weight * MaxNodeScore * haveLabel
参数说明:
- weight:节点池软亲和plugin的权重。
- MaxNodeScore:节点最大得分,值为100。
- haveLabel:节点上是否存在插件中配置的label,如果有,值为1,如果节点上没有,值为0。
前提条件
✅ 已创建v1.19.16及以上版本的集群,具体操作请参见购买Standard/Turbo集群。
✅ 集群中已安装1.11.5及以上版本的Volcano插件,具体操作请参见Volcano调度器。
配置Volcano节点池软亲和调度策略
1、在节点池上配置用于亲和调度的标签。
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧选择“节点管理”,在右侧选择“节点池”页签。
- 单击节点池名称后的“更新”,在弹出的“更新节点池”页面中配置参数,在“K8s标签”中配置对应的标签。
示例如下:

2、单击左侧导航栏的“配置中心”,切换至“调度配置”页面,选择Volcano调度器找到对应的“专家模式”,单击“开始使用”。

3、设置Volcano调度器配置参数,JSON格式的配置示例如下
...
"default_scheduler_conf": {
"actions": "allocate, backfill, preempt",
"tiers": [
{
"plugins": [
{
"name": "priority"
},
{
"name": "gang"
},
{
"name": "conformance"
}
]
},
{
"plugins": [
{
"name": "drf"
},
{
"name": "predicates"
},
{
"name": "nodeorder"
}
]
},
{
"plugins": [
{
"name": "cce-gpu-topology-predicate"
},
{
"name": "cce-gpu-topology-priority"
},
{
"name": "cce-gpu"
},
{
// 开启节点池亲和性调度
"name": "nodepoolaffinity",
// 节点池亲和性调度权重及标签设置
"arguments": {
"nodepoolaffinity.weight": 10000,
"nodepoolaffinity.label": "nodepool=nodepool1"
}
}
]
},
{
"plugins": [
{
"name": "nodelocalvolume"
},
{
"name": "nodeemptydirvolume"
},
{
"name": "nodeCSIscheduling"
},
{
"name": "networkresource"
}
]
}
]
},
...
4、 完成以上配置后,单击“确定”。
🌍 Volcano 是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Ray、 Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene 等众多主流计算框架的支持,并构建起完善的上下游生态。
📌 更多Volcano云原生批量计算 技术应用,请访问社区仓库或官网:
1️⃣ Volcano云原生批量计算社区官网:https://volcano.sh
2️⃣ Volcano GitHub 仓库: https://github.com/volcano-sh/volcano
3️⃣ Volcano云原生批量计算公开课:https://edu.huaweicloud.com/roadmap/cloudnative.html
4️⃣ 华为云云容器引擎CCE:https://www.huaweicloud.com/product/cce.html

更多云原生技术动向
关注容器魔方
- 点赞
- 收藏
- 关注作者
评论(0)