文档首页/ 云容器引擎 CCE/ 用户指南/ 调度/ Volcano调度/ 使用Volcano调度工作负载
更新时间:2025-07-18 GMT+08:00

使用Volcano调度工作负载

Volcano是一个基于Kubernetes的批处理平台,提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力,通过接入AI、大数据、基因、渲染等诸多行业计算框架服务终端用户,并针对计算型应用提供了作业调度、作业管理、队列管理等多项功能。

一般情况下,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注解配置如下:

表1 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值回显如下:

  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