更新时间:2024-01-04 GMT+08:00

Volcano调度器

插件简介

Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性。

Volcano提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力,通过接入AI、大数据、基因、渲染等诸多行业计算框架服务终端用户,最大支持1000Pod/s的调度并发数,轻松应对各种规模的工作负载,大大提高调度效率和资源利用率。

Volcano针对计算型应用提供了作业调度、作业管理、队列管理等多项功能,主要特性包括:

  • 丰富的计算框架支持:通过CRD提供了批量计算任务的通用API,通过提供丰富的插件及作业生命周期高级管理,支持TensorFlow,MPI,Spark等计算框架容器化运行在Kubernetes上。
  • 高级调度:面向批量计算、高性能计算场景提供丰富的高级调度能力,包括成组调度,优先级抢占、装箱、资源预留、任务拓扑关系等。
  • 队列管理:支持分队列调度,提供队列优先级、多级队列等复杂任务调度能力。

目前Volcano项目已经在Github开源,项目开源地址:https://github.com/volcano-sh/volcano

本文介绍如何在CCE集群中安装及配置Volcano插件,具体使用方法请参见Volcano调度

在使用Volcano作为调度器时,建议将集群中所有工作负载都使用Volcano进行调度,以避免多调度器同时工作导致的一些调度资源冲突问题。

安装插件

  1. 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件中心”,在右侧找到Volcano调度器,单击“安装”
  2. 在安装插件页面,设置“规格配置”

    表1 Volcano插件规格配置

    参数

    参数说明

    插件规格

    该插件可配置“单实例”“高可用”“自定义”规格。

    实例数

    选择上方插件规格后,显示插件中的实例数。

    选择“自定义”规格时,您可根据需求调整插件实例数。

    容器

    选择插件规格后,显示插件容器的CPU和内存配额。

    选择“自定义”规格时,volcano-controller和volcano-scheduler的建议值如下:

    • 小于100个节点,可使用默认配置,即CPU的申请值为500m,限制值为2000m;内存的申请值为500Mi,限制值为2000Mi。
    • 高于100个节点,每增加100个节点(10000个Pod),建议CPU的申请值增加500m,内存的申请值增加1000Mi;CPU的限制值建议比申请值多1500m,内存的限制值建议比申请值多1000Mi。
      说明:

      申请值推荐计算公式:

      • CPU申请值:计算“目标节点数 * 目标Pod规模”的值,并在表2中根据“集群节点数 * Pod规模”的计算值进行插值查找,向上取最接近规格的申请值及限制值。

        例如2000节点和2w个Pod的场景下,“目标节点数 * 目标Pod规模”等于4000w,向上取最接近的规格为700/7w(“集群节点数 * Pod规模”等于4900w),因此建议CPU申请值为4000m,限制值为5500m。

      • 内存申请值:建议每1000个节点分配2.4G内存,每1w个Pod分配1G内存,二者叠加进行计算。(该计算方法相比表2中的建议值会存在一定的误差,通过查表或计算均可)

        即:内存申请值 = 目标节点数/1000 * 2.4G + 目标Pod规模/1w * 1G。

        例如2000节点和2w个Pod的场景下,内存申请值 = 2 * 2.4G + 2 * 1G = 6.8G

    表2 volcano-controller和volcano-scheduler的建议值

    集群节点数/Pod规模

    CPU Request(m)

    CPU Limit(m)

    Memory Request(Mi)

    Memory Limit(Mi)

    50/5k

    500

    2000

    500

    2000

    100/1w

    1000

    2500

    1500

    2500

    200/2w

    1500

    3000

    2500

    3500

    300/3w

    2000

    3500

    3500

    4500

    400/4w

    2500

    4000

    4500

    5500

    500/5w

    3000

    4500

    5500

    6500

    600/6w

    3500

    5000

    6500

    7500

    700/7w

    4000

    5500

    7500

    8500

  3. 设置插件支持的“高级参数”

    配置Volcano默认调度器配置参数,详情请参见表4
    colocation_enable: ''
    default_scheduler_conf:
      actions: 'allocate, backfill'
      tiers:
        - plugins:
            - name: 'priority'
            - name: 'gang'
            - name: 'conformance'
            - name: 'lifecycle'
              arguments:
                lifecycle.MaxGrade: 10
                lifecycle.MaxScore: 200.0
                lifecycle.SaturatedTresh: 1.0
                lifecycle.WindowSize: 10
        - plugins:
            - name: 'drf'
            - name: 'predicates'
            - name: 'nodeorder'
        - plugins:
            - name: 'cce-gpu-topology-predicate'
            - name: 'cce-gpu-topology-priority'
            - name: 'cce-gpu'
        - plugins:
            - name: 'nodelocalvolume'
            - name: 'nodeemptydirvolume'
            - name: 'nodeCSIscheduling'
            - name: 'networkresource'
    tolerations:
      - effect: NoExecute
        key: node.kubernetes.io/not-ready
        operator: Exists
        tolerationSeconds: 60
      - effect: NoExecute
        key: node.kubernetes.io/unreachable
        operator: Exists
        tolerationSeconds: 60
    表3 Volcano高级配置参数说明

    插件

    功能

    参数说明

    用法演示

    colocation_enable

    是否开启混部能力。

    参数值:

    • true:表示开启混部。
    • false:表示不开启混部。

    -

    default_scheduler_conf

    负责Pod调度的组件配置,由一系列action和plugin组成。具有高度的可扩展性,您可以根据需要实现自己的action和plugin。

    主要包括actions和tiers两部分:

    • actions:定义调度器需要执行的action类型及顺序。
    • tiers:配置plugin列表。

    -

    actions

    定义了调度各环节中需要执行的动作,action的配置顺序就是scheduler的执行顺序。详情请参见Actions

    调度器会遍历所有的待调度Job,按照定义的次序依次执行enqueue、allocate、preempt、backfill等动作,为每个Job找到一个最合适的节点。

    支持的参数值:

    • enqueue:负责通过一系列的过滤算法筛选出符合要求的待调度任务并将它们送入待调度队列。经过这个action,任务的状态将由pending变为inqueue。
    • allocate:负责通过一系列的预选和优选算法筛选出最适合的节点。
    • preempt:负责根据优先级规则为同一队列中高优先级任务执行抢占调度。
    • backfill:负责将处于pending状态的任务尽可能的调度下去以保证节点资源的最大化利用。
    actions: 'allocate, backfill'
    说明:
    • 配置action时,preempt和enqueue不可同时使用。
    • action的配置顺序为:enqueue, allocate, preempt, backfill

    plugins

    根据不同场景提供了action中算法的具体实现细节,详情请参见Plugins

    支持的参数值请参见表4

    -

    tolerations

    插件实例对节点污点的容忍度设置。

    默认配置下,插件实例可以运行在拥有“node.kubernetes.io/not-ready”“node.kubernetes.io/unreachable”污点,且污点效果值为NoExecute的节点上,但会在60秒后被驱逐。

    tolerations:
      - effect: NoExecute
        key: node.kubernetes.io/not-ready
        operator: Exists
        tolerationSeconds: 60
      - effect: NoExecute
        key: node.kubernetes.io/unreachable
        operator: Exists
        tolerationSeconds: 60
    表4 支持的Plugins列表

    插件

    功能

    参数说明

    用法演示

    binpack

    将Pod调度到资源使用较高的节点(尽量不往空白节点分配),以减少资源碎片。

    arguments参数:

    • binpack.weight:binpack插件本身在所有插件打分中的权重。
    • binpack.cpu:CPU资源在所有资源中的权重,默认是1。
    • binpack.memory:内存资源在所有资源中的权重,默认是1。
    • binpack.resources:Pod请求的其他自定义资源类型,例如nvidia.com/gpu。可添加多个并用英文逗号隔开。
    • binpack.resources.<your_resource>:自定义资源在所有资源中的权重,可添加多个类型的资源,其中<your_resource>为binpack.resources参数中定义的资源类型。例如binpack.resources.nvidia.com/gpu。
    - plugins:
      - name: binpack
        arguments:
          binpack.weight: 10
          binpack.cpu: 1
          binpack.memory: 1
          binpack.resources: nvidia.com/gpu, example.com/foo
          binpack.resources.nvidia.com/gpu: 2
          binpack.resources.example.com/foo: 3

    conformance

    跳过关键Pod(比如在kube-system命名空间的Pod),防止这些Pod被驱逐。

    -

    - plugins:
      - name: 'priority'
      - name: 'gang'
        enablePreemptable: false
      - name: 'conformance'

    lifecycle

    通过统计业务伸缩的规律,将有相近生命周期的Pod优先调度到同一节点,配合autoscaler的水平扩缩容能力,快速缩容释放资源,节约成本并提高资源利用率。

    1. 统计业务负载中Pod的生命周期,将有相近生命周期的Pod调度到同一节点

    2. 对配置了自动扩缩容策略的集群,通过调整节点的缩容注解,优先缩容使用率低的节点

    arguments参数:
    • lifecycle.WindowSize:为int型整数,不小于1,默认为10。

      记录副本数变更的次数,负载变化规律、周期性明显时可适当调低;变化不规律,副本数频繁变化需要调大。若过大会导致学习周期变长,记录事件过多。

    • lifecycle.MaxGrade:为int型整数,不小于3,默认为3。

      副本分档数,如设为3,代表分为高中低档。负载变化规律、周期性明显时可适当调低;变化不规律,需要调大。若过小会导致预测的生命周期不够准确。

    • lifecycle.MaxScore:为float64浮点数,不小于50.0,默认为200.0。

      lifecycle插件的最大得分,等效于插件权重。

    • lifecycle.SaturatedTresh:为float64浮点数,小于0.5时取值为0.5;大于1时取值为1,默认为0.8。

      用于判断节点利用率是否过高的阈值,当超过该阈值,调度器会优先调度作业至其他节点。

    - plugins:
      - name: priority
      - name: gang
        enablePreemptable: false
      - name: conformance
      - name: lifecycle
        arguments:
          lifecycle.MaxGrade: 10
          lifecycle.MaxScore: 200.0
          lifecycle.SaturatedTresh: 1.0
          lifecycle.WindowSize: 10
    说明:
    • 对不希望被缩容的节点,需要手动标记长周期节点,为节点添加volcano.sh/long-lifecycle-node: true的annotation。对未标记节点,lifecycle插件将根据节点上负载的生命周期自动标记。
    • MaxScore默认值200.0相当于其他插件权重的两倍,当lifecycle插件效果不明显或与其他插件冲突时,需要关闭其他插件,或将MaxScore调大。
    • 调度器重启后,lifecycle插件需要重新记录负载的变化状况,需要统计数个周期后才能达到最优调度效果。

    gang

    将一组Pod看做一个整体进行资源分配。观察Job下的Pod已调度数量是否满足了最小运行数量,当Job的最小运行数量得到满足时,为Job下的所有Pod执行调度动作,否则,不执行。

    说明:

    使用gang调度策略时,当集群剩余的资源大于等于Job的最小运行数量的1/2、但小于Job的最小运行数量时,不会触发autoscaler扩容。

    • enablePreemptable:
      • true:表示开启抢占。
      • false:表示不开启抢占。
    • enableJobStarving:
      • true: 表示按照Job的minAvailable进行抢占。
      • false:表示按照Job的replicas进行抢占。
      说明:
      • Kubernetes原生工作负载(如Deployment)的minAvailable默认值为1,建议配置enableJobStarving: false。
      • AI大数据场景,创建vcjob时可指定minAvailable值,推荐配置enableJobStarving: true。
      • Volcano 1.11.5之前的版本enableJobStarving默认为true,1.11.5之后的版本默认配置为false。
    - plugins:
      - name: priority
      - name: gang
        enablePreemptable: false
        enableJobStarving: false
      - name: conformance

    priority

    根据自定义的负载优先级进行调度。

    -

    - plugins:
      - name: priority
      - name: gang
        enablePreemptable: false
      - name: conformance

    overcommit

    将集群的资源放到一定倍数后调度,提高负载入队效率。负载都是deployment的时候,建议去掉此插件或者设置扩大因子为2.0。

    说明:

    该插件在Volcano 1.6.5及以上版本中支持使用。

    arguments参数:

    • overcommit-factor:扩大因子,默认是1.2。
    - plugins:
      - name: overcommit
        arguments:
          overcommit-factor: 2.0

    drf

    DRF调度算法(Dominant Resource Fairness)可以根据作业使用的主导资源份额进行调度,资源份额较小的作业将具有更高优先级。

    enablePreemptable:

    • true:表示开启抢占。
    • false:表示不开启抢占。
    说明:

    drf抢占能力默认关闭,调度器根据作业优先级进行抢占。drf抢占与优先级抢占不允许同时开启。

    - plugins:
      - name: 'drf'
        enablePreemptable: false
      - name: 'predicates'
      - name: 'nodeorder'

    predicates

    预选节点的常用算法,包括节点亲和、Pod亲和、污点容忍、Node重复,volume limits,volume zone匹配等一系列基础算法。

    -

    - plugins:
      - name: 'drf'
      - name: 'predicates'
      - name: 'nodeorder'

    nodeorder

    优选节点的常用算法,通过模拟分配从各个维度为节点打分,找到最适合当前作业的节点。

    打分参数:

    • nodeaffinity.weight:节点亲和性优先调度,默认值是2。
    • podaffinity.weight:Pod亲和性优先调度,默认值是2。
    • leastrequested.weight:资源分配最少的节点优先,默认值是1。
    • balancedresource.weight:节点上面的不同资源分配平衡的优先,默认值是1。
    • mostrequested.weight:资源分配最多的节点优先,默认值是0。
    • tainttoleration.weight:污点容忍高的优先调度,默认值是3。
    • imagelocality.weight:节点上面有Pod需要镜像的优先调度,默认值是1。
    • selectorspread.weight:把Pod均匀调度到不同的节点上,默认值是0。
    • podtopologyspread.weight:Pod拓扑调度,默认值是2。
    - plugins:
      - name: nodeorder
        arguments:
          leastrequested.weight: 1
          mostrequested.weight: 0
          nodeaffinity.weight: 2
          podaffinity.weight: 2
          balancedresource.weight: 1
          tainttoleration.weight: 3
          imagelocality.weight: 1
          podtopologyspread.weight: 2

    cce-gpu-topology-predicate

    GPU拓扑调度预选算法

    -

    - plugins:
      - name: 'cce-gpu-topology-predicate'
      - name: 'cce-gpu-topology-priority'
      - name: 'cce-gpu'

    cce-gpu-topology-priority

    GPU拓扑调度优选算法

    -

    - plugins:
      - name: 'cce-gpu-topology-predicate'
      - name: 'cce-gpu-topology-priority'
      - name: 'cce-gpu'

    cce-gpu

    结合CCE的GPU插件支持GPU资源分配,支持小数GPU配置。

    -

    - plugins:
      - name: 'cce-gpu-topology-predicate'
      - name: 'cce-gpu-topology-priority'
      - name: 'cce-gpu'

    numa-aware

    NUMA亲和性调度。

    arguments参数:

    • weight:插件的权重。
    - plugins:
      - name: 'nodelocalvolume'
      - name: 'nodeemptydirvolume'
      - name: 'nodeCSIscheduling'
      - name: 'networkresource'
        arguments:
          NetworkType: vpc-router
      - name: numa-aware
        arguments:
          weight: 10

    networkresource

    支持预选过滤ENI需求节点,参数由CCE传递,不需要手动配置。

    arguments参数:

    • NetworkType:网络类型(eni或者vpc-router类型)。
    - plugins:
      - name: 'nodelocalvolume'
      - name: 'nodeemptydirvolume'
      - name: 'nodeCSIscheduling'
      - name: 'networkresource'
        arguments:
          NetworkType: vpc-router

    nodelocalvolume

    支持预选过滤不符合local volume需求的节点。

    -

    - plugins:
      - name: 'nodelocalvolume'
      - name: 'nodeemptydirvolume'
      - name: 'nodeCSIscheduling'
      - name: 'networkresource'

    nodeemptydirvolume

    支持预选过滤不符合emptydir需求的节点。

    -

    - plugins:
      - name: 'nodelocalvolume'
      - name: 'nodeemptydirvolume'
      - name: 'nodeCSIscheduling'
      - name: 'networkresource'

    nodeCSIscheduling

    支持预选过滤everest组件异常的节点。

    -

    - plugins:
      - name: 'nodelocalvolume'
      - name: 'nodeemptydirvolume'
      - name: 'nodeCSIscheduling'
      - name: 'networkresource'

  4. 设置插件实例的“调度策略”

    • 调度策略对于DaemonSet类型的插件实例不会生效。
    • 设置多可用区部署或节点亲和策略时,需保证集群中存在满足调度策略的节点且拥有足够的资源,否则插件实例将无法运行。
    表5 插件调度配置

    参数

    参数说明

    多可用区部署

    • 优先模式:优先将插件的Deployment实例调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将调度到单可用区。
    • 强制模式:插件Deployment实例强制调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将无法全部运行。

    节点亲和

    • 不亲和:插件实例不指定节点亲和调度。
    • 指定节点调度:指定插件实例部署的节点。若不指定,将根据集群默认调度策略进行随机调度。
    • 指定节点池调度:指定插件实例部署的节点池。若不指定,将根据集群默认调度策略进行随机调度。
    • 自定义亲和策略:填写期望插件部署的节点标签实现更灵活的调度策略,若不填写将根据集群默认调度策略进行随机调度。

      同时设置多条自定义亲和策略时,需要保证集群中存在同时满足所有亲和策略的节点,否则插件实例将无法运行。

    容忍策略

    容忍策略与节点的污点能力配合使用,允许(不强制)插件的 Deployment 实例调度到带有与之匹配的污点的节点上,也可用于控制插件的 Deployment 实例所在的节点被标记污点后插件的 Deployment 实例的驱逐策略。

    插件会对实例添加针对node.kubernetes.io/not-readynode.kubernetes.io/unreachable污点的默认容忍策略,容忍时间窗为60s。

    详情请参见容忍策略

  5. 单击“安装”

组件说明

表6 Volcano组件

容器组件

说明

资源类型

volcano-scheduler

负责Pod调度。

Deployment

volcano-controller

负责CRD资源的同步。

Deployment

volcano-admission

Webhook server端,负责Pod、Job等资源的校验和更改。

Deployment

volcano-agent

云原生混部agent,负责节点QoS保障、CPU Burst和动态资源超卖等。

DaemonSet

resource-exporter

负责上报节点的NUMA拓扑信息。

DaemonSet

在控制台中修改volcano-scheduler配置

volcano-scheduler是负责Pod调度的组件,它由一系列action和plugin组成。action定义了调度各环节中需要执行的动作;plugin根据不同场景提供了action 中算法的具体实现细节。volcano-scheduler具有高度的可扩展性,您可以根据需要实现自己的action和plugin。

Volcano允许用户在安装,升级,编辑时,编写Volcano调度器配置信息,并将配置内容同步到volcano-scheduler-configmap里。

当前小节介绍如何使用自定义配置,以便用户让volcano-scheduler能更适合自己的场景。

仅Volcano 1.7.1及以上版本支持该功能。在新版插件界面上合并了原plugins.eas_service和resource_exporter_enable等选项,以新选项default_scheduler_conf代替。

您可登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件中心”,在右侧找到Volcano调度器,单击“安装”“升级”,并在“参数配置”中设置Volcano调度器配置参数。

  • 使用resource_exporter配置,示例如下:
    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "allocate, backfill",
            "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": "numa-aware" # add this also enable resource_exporter
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }

    开启后可以同时使用volcano-scheduler的numa-aware插件功能和resource_exporter功能。

  • 使用eas_service配置,示例如下:
    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "allocate, backfill",
            "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": "eas",
                            "custom": {
                                "availability_zone_id": "",
                                "driver_id": "",
                                "endpoint": "",
                                "flavor_id": "",
                                "network_type": "",
                                "network_virtual_subnet_id": "",
                                "pool_id": "",
                                "project_id": "",
                                "secret_name": "eas-service-secret"
                            }
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }
  • 使用ief配置,示例如下:
    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "allocate, backfill",
            "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": "ief",
                            "enableBestNode": true
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }

保留原volcano-scheduler-configmap配置

假如在某场景下希望插件升级后时沿用原配置,可参考以下步骤:

  1. 查看原volcano-scheduler-configmap配置,并备份。

    示例如下:
    # kubectl edit cm volcano-scheduler-configmap -n kube-system
    apiVersion: v1
    data:
      default-scheduler.conf: |-
        actions: "enqueue, allocate, backfill"
        tiers:
        - plugins:
          - name: priority
          - name: gang
          - name: conformance
        - plugins:
          - name: drf
          - name: predicates
          - name: nodeorder
          - name: binpack
            arguments:
              binpack.cpu: 100
              binpack.weight: 10
              binpack.resources: nvidia.com/gpu
              binpack.resources.nvidia.com/gpu: 10000
        - plugins:
          - name: cce-gpu-topology-predicate
          - name: cce-gpu-topology-priority
          - name: cce-gpu
        - plugins:
          - name: nodelocalvolume
          - name: nodeemptydirvolume
          - name: nodeCSIscheduling
          - name: networkresource

  2. 在控制台“参数配置”中填写自定义修改的内容:

    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "enqueue, allocate, backfill",
            "tiers": [
                {
                    "plugins": [
                        {
                            "name": "priority"
                        },
                        {
                            "name": "gang"
                        },
                        {
                            "name": "conformance"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "drf"
                        },
                        {
                            "name": "predicates"
                        },
                        {
                            "name": "nodeorder"
                        },
                        {
                            "name": "binpack",
                            "arguments": {
                                "binpack.cpu": 100,
                                "binpack.weight": 10,
                                "binpack.resources": "nvidia.com/gpu",
                                "binpack.resources.nvidia.com/gpu": 10000
                            }
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "cce-gpu-topology-predicate"
                        },
                        {
                            "name": "cce-gpu-topology-priority"
                        },
                        {
                            "name": "cce-gpu"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }

    使用该功能时会覆盖原volcano-scheduler-configmap中内容,所以升级时务必检查是否在volcano-scheduler-configmap做过修改。如果是,需要把修改内容同步到升级界面里。

Volcano插件卸载说明

卸载插件时,会将Volcano的自定义资源(表7)全部清理,已创建的相关资源也将同步删除,重新安装插件不会继承和恢复卸载之前的任务信息。如集群中还存在正在使用的Volcano自定义资源,请谨慎卸载插件。

表7 Volcano自定义资源

名称

API组

API版本

资源级别

Command

bus.volcano.sh

v1alpha1

Namespaced

Job

batch.volcano.sh

v1alpha1

Namespaced

Numatopology

nodeinfo.volcano.sh

v1alpha1

Cluster

PodGroup

scheduling.volcano.sh

v1beta1

Namespaced

Queue

scheduling.volcano.sh

v1beta1

Cluster