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

一般情况下,Kubernetes在调度工作负载时会使用自带的默认调度器,若需要使用Volcano调度器的能力,您可以为工作负载指定调度器。关于Kubernetes调度器的详情请参见为Pod指定调度器。
约束与限制
调度大量工作负载的场景下,Volcano会打印较多的日志,建议搭配日志服务使用,否则可能导致日志过多占满所在节点磁盘。
使用Volcano调度工作负载
使用Volcano调度工作负载时,只需要在Pod的spec字段中设置schedulerName参数并指定参数值为volcano,示例如下:
1、使用yaml创建queue:
apiVersion: scheduling.volcano.sh/v1beta1
kind: Queue
metadata:
name: q1
spec:
reclaimable: true
weight: 1
2、在Pod的spec字段中设置schedulerName参数并指定参数值为volcano:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
# 指定作业到q1队列
scheduling.volcano.sh/queue-name: "q1"
volcano.sh/preemptable: "true"
labels:
app: nginx
spec:
# 指定调度器为Volcano
schedulerName: volcano
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 1
memory: 100Mi
requests:
cpu: 1
memory: 100Mi
ports:
- containerPort: 80
同时,Volcano还支持设置负载所属队列和抢占属性等,可通过Pod的注解实现。目前Volcano支持的Pod注解配置如下:
|
Pod注解 |
说明 |
|
scheduling.volcano.sh/queue-name: "<queue-name>" |
指定负载所在队列,其中<queue-name>为队列名称。 |
|
volcano.sh/preemptable: "true" |
表示作业是否可抢占。开启后,认为该作业可以被抢占。 取值范围:
|
可通过查询Pod详情查看Pod是否由Volcano调度,以及被分配的队列:
1、使用以下命令查询Pod详情并获取scheduling.k8s.io/group-name的值:
kubectl describe pod <pod_name>
Pod的scheduling.k8s.io/group-name值回显如下:

2、查看Pod是否由Volcano调度,以及被分配的队列:
kubectl describe pg <group_name>
回显如下:
Spec:
Min Member: 1
Min Resources:
Cpu: 100m
Memory: 100Mi
Queue: q1
Status:
Conditions:
Last Transition Time: 2023-05-30T01:54:43Z
Reason: tasks in gang are ready to be scheduled
Status: True
Transition ID: 70be1d7d-3532-41e0-8324-c7644026b38f
Type: Scheduled
Phase: Running
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 0s (x3 over 2s) volcano pod group is ready
📌 更多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
Volcano 是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Ray、 Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene 等众多主流计算框架的支持,并构建起完善的上下游生态。
更多云原生技术动向
关注容器魔方
- 点赞
- 收藏
- 关注作者
评论(0)