华为云云容器引擎CCE调度篇——使用Volcano调度工作负载

举报
云容器大未来 发表于 2025/11/25 14:30:58 2025/11/25
【摘要】 华为云云容器引擎CCE支持多种资源与任务调度策略,有助于提升应用性能和集群整体资源利用率,CPU资源调度、GPU/NPU异构资源调度以及Volcano调度的主要功能。本系列文章将介绍Volcano调度在华为云云容器引擎CCE中的运用。Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一...

华为云云容器引擎CCE支持多种资源与任务调度策略,有助于提升应用性能和集群整体资源利用率,CPU资源调度、GPU/NPU异构资源调度以及Volcano调度的主要功能。本系列文章将介绍Volcano调度在华为云云容器引擎CCE中的运用。

Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力。

volcano社区.jpg

一般情况下,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"

表示作业是否可抢占。开启后,认为该作业可以被抢占。

取值范围:

  • true:开启抢占。(默认为开启状态)

  • false:关闭抢占。

可通过查询Pod详情查看Pod是否由Volcano调度,以及被分配的队列:

1、使用以下命令查询Pod详情并获取scheduling.k8s.io/group-name的值:

kubectl describe pod <pod_name>

Pod的scheduling.k8s.io/group-name值回显如下:

工作负载1.png

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️⃣ 华为云云容器引擎CCEhttps://www.huaweicloud.com/product/cce.html

 


Volcano 是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Ray、 Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene 等众多主流计算框架的支持,并构建起完善的上下游生态。


容器模仿.png更多云原生技术动向

关注容器魔方


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。