昇腾社区首页
中文
注册

安装Volcano

本章为集群调度组件提供的Volcano组件(vc-scheduler和vc-controller-manager)的安装指导。如需使用开源Volcano的其他组件,请用户自行安装,并保证其安全性。

本文档中Volcano默认为集群调度组件提供的Volcano组件。其他基于开源Volcano的调度器可通过(可选)集成昇腾插件扩展开源Volcano章节,集成集群调度组件为开发者提供的Ascend-volcano-plugin插件,实现NPU调度相关功能。

操作步骤

  1. 以root用户登录K8s管理节点,并执行以下命令,查看Volcano镜像和版本号是否正确。
    docker images | grep volcanosh
    回显示例如下。
    volcanosh/vc-controller-manager      v1.4.0              84c73128cc55        3 days ago          44.5MB
    volcanosh/vc-scheduler               v1.4.0              e90c114c75b1        3 days ago          188MB
  2. Volcano软件包解压目录(以“/home/ascend-volcano”为例)下的YAML文件拷贝到K8s管理节点上任意目录(以“/home/ascend-volcano”为例)。如果Volcano软件包在K8s管理节点上解压,可以不用进行拷贝操作。
    cd /home/ascend-volcano
    scp root@{软件包解压节点IP地址}:/home/ascend-volcano/volcano-v{version}.yaml ./
  3. 如不修改组件启动参数,可跳过本步骤。否则,请根据实际情况修改对应启动YAML文件中Volcano的启动参数。常用启动参数请参见表1表2
  4. 配置Volcano日志转储。
    安装过程中,Volcano日志将外挂到磁盘空间(“/var/log/mindx-dl”),为防止空间被占满,请为Volcano配置日志转储,配置项信息参见表3
    1. 在管理节点“/etc/logrotate.d”目录下,执行以下命令,创建日志转储配置文件。
      vi /etc/logrotate.d/文件名

      例如:

      vi /etc/logrotate.d/volcano
      写入以下内容,然后执行:wq命令保存。
      /var/log/mindx-dl/volcano-*/*.log{    
           daily     
           rotate 8     
           size 50M     
           compress     
           dateext     
           missingok     
           notifempty     
           copytruncate     
           create 0640 hwMindX hwMindX     
           sharedscripts     
           postrotate         
               chmod 640 /var/log/mindx-dl/volcano-*/*.log                
               chmod 440 /var/log/mindx-dl/volcano-*/*.log-*            
           endscript 
      }
    2. 依次执行以下命令,设置配置文件权限为640,属主为root。
      chmod 640 /etc/logrotate.d/文件名
      chown root /etc/logrotate.d/文件名
      例如:
      chmod 640 /etc/logrotate.d/volcano
      chown root /etc/logrotate.d/volcano
  5. (可选)在“volcano-v{version}.yaml”中,配置Volcano所需的CPU和内存。CPU和内存推荐值可以参见开源Volcano官方文档的表2volcano-controller和volcano-scheduler的建议值。
    ...
    kind: Deployment
    ...
      labels:
        app: volcano-scheduler
    spec:
      replicas: 1
    ...
        spec:
    ...
              imagePullPolicy: "IfNotPresent"
              resources:
                requests:
                  memory: 300Mi
                  cpu: 500m
                limits:
                  memory: 300Mi
                  cpu: 500m
    ...
    kind: Deployment
    ...
      labels:
        app: volcano-controller
    spec:
    ...
        spec:
    ...
              resources:
                requests:
                  memory: 3Gi
                  cpu: 500m
                limits:
                  memory: 3Gi
                  cpu: 500m
    ...
  6. (可选)在“volcano-v{version}.yaml”中,配置Volcano所使用的插件。请参见开源Volcano官方文档中表3Volcano高级配置参数说明和表4支持的Plugins列表的说明进行操作。
    ...
    data:
      volcano-scheduler.conf: |
        actions: "enqueue, allocate, backfill"
        tiers:
        - plugins:
          - name: priority
          - name: gang
          - name: conformance
          - name: volcano-npu_v5.0.1.1_linux-aarch64  # 其中v5.0.1.1为MindX DL的版本号,根据不同版本,该处编码不同。
        - plugins:
          - name: drf
          - name: predicates
          - name: proportion
          - name: nodeorder
          - name: binpack
  7. (可选)在“volcano-v{version}.yaml”中,配置节点类型标签。
    ...
    data:
      volcano-scheduler.conf: |
    ...
        configurations:
          - name: selector
            arguments: {"host-arch":"huawei-arm|huawei-x86",
            "accelerator":"huawei-Ascend910|nvidia-tesla-v100|nvidia-tesla-p40",
            "accelerator-type":"card|module|half|module-{xxx}b-16|module-{xxx}b-8|card-{xxx}b-2","servertype":"soc"}
    ...
    • 配置方式为map格式,目前仅支持英文输入。若一个标签存在多个值的情况,请使用“|”进行分割。
    • 在NPU任务中Ascend Device Plugin取值为“Ascend910”时,在“arguments”中"host-arch":"huawei-arm|huawei-x86"为默认配置,修改无效。若用户需要使用其他标签,请自行添加。
    • host-archhuawei-arm|huawei-x86,不配置或修改,都只对NPU任务生效。
    • accelerator-type:card、module和half为Atlas 训练系列产品使用的标签;module-{xxx}b-16、module-{xxx}b-8和card-{xxx}b-2为Atlas A2 训练系列产品使用的标签。芯片型号的数值可通过npu-smi info命令查询,返回的“Name”字段对应信息为芯片型号,下文的{xxx}即取“910”字符作为芯片型号数值。
  8. 在管理节点的YAML所在路径,执行以下命令,启动Volcano
    kubectl apply -f volcano-v{version}.yaml

    启动示例如下,出现Running表示组件启动成功:

    root@ubuntu:/home/ascend-volcano# kubectl apply -f volcano-v1.4.0.yaml
    namespace/volcano-system created
    namespace/volcano-monitoring created
    configmap/volcano-scheduler-configmap created
    serviceaccount/volcano-scheduler created
    clusterrole.rbac.authorization.K8s.io/volcano-scheduler created
    clusterrolebinding.rbac.authorization.K8s.io/volcano-scheduler-role created
    deployment.apps/volcano-scheduler created
    service/volcano-scheduler-service created
    serviceaccount/volcano-controllers created
    clusterrole.rbac.authorization.K8s.io/volcano-controllers created
    clusterrolebinding.rbac.authorization.K8s.io/volcano-controllers-role created
    deployment.apps/volcano-controllers created
    customresourcedefinition.apiextensions.K8s.io/jobs.batch.volcano.sh created
    customresourcedefinition.apiextensions.K8s.io/commands.bus.volcano.sh created
    customresourcedefinition.apiextensions.K8s.io/podgroups.scheduling.volcano.sh created
    customresourcedefinition.apiextensions.K8s.io/queues.scheduling.volcano.sh created
    customresourcedefinition.apiextensions.K8s.io/numatopologies.nodeinfo.volcano.sh created
  9. 执行以下命令,查看组件状态。
    kubectl get pod -n volcano-system
    回显示例如下:
    NAME                                   READY   STATUS    RESTARTS   AGE
    volcano-controllers-5cf8d788d5-qdpzq   1/1     Running   0          1m
    volcano-scheduler-6cffd555c9-45k7c     1/1     Running   0          1m

参数说明

表1 volcano scheduler启动参数

参数

类型

默认值

说明

--log-dir

string

日志目录,组件启动YAML中默认值为/var/log/mindx-dl/volcano-scheduler。

--log-file

string

日志文件名称,组件启动YAML中默认值为/var/log/mindx-dl/volcano-scheduler/volcano-scheduler.log。

说明:

转储后文件的命名格式为:volcano-scheduler.log-触发转储的时间.gz,如:volcano-scheduler.log-20230926.gz。

--scheduler-conf

string

/volcano.scheduler/volcano-scheduler.conf

调度组件配置文件的绝对路径。

--logtostderr

bool

false

日志是否打印到标准输出。

-v

int

2

日志输出级别:

  • 1:error
  • 2:warning
  • 3:info
  • 4:debug

--plugins-dir

string

plugins

scheduler插件加载路径。

--version

bool

false

volcano scheduler二进制版本号。

表2 volcano controller启动参数

参数

类型

默认值

说明

--log-dir

string

日志目录,组件启动YAML中默认值为/var/log/mindx-dl/volcano-controller。

--log-file

string

日志文件名称,组件启动YAML中默认值为/var/log/mindx-dl/volcano-controller/volcano-controller.log。

说明:

转储后文件的命名格式为:volcano-controller.log-触发转储的时间.gz,如:volcano-controller.log-20230926.gz。

--logtostderr

bool

false

日志是否打印到标准输出。

-v

int

4

日志输出级别:

  • 1:error
  • 2:warning
  • 3:info
  • 4:debug

--version

bool

false

volcano controller二进制版本号。

Volcano为开源软件,启动参数只罗列目前使用的常见参数,其他详细的参数请参见开源软件的说明。

表3 Volcano日志转储文件配置项

配置项

说明

可选值

daily

日志转储频率。

  • daily:每日进行一次转储检查。
  • weekly:每周进行一次转储检查。
  • monthly:每月进行一次转储检查。
  • yearly:每年进行一次转储检查。

rotate x

日志文件删除之前转储的次数。

x为备份次数。

例如:

  • rotate 0:没有备份。
  • rotate 8:保留8次备份。

size xx

日志文件到达指定的大小时才转储。

size单位可以指定:

  • byte(缺省)
  • K
  • M

例如size 50M指日志文件达到50 MB时转储。

说明:

logrotate会根据配置的转储频率,定期检查日志文件大小,检查时大小超过size的文件才会触发转储。

这意味着,logrotate并不会在日志文件达到大小限制时立刻将其转储。

compress

是否通过gzip压缩转储以后的日志。

  • compress:使用gzip压缩。
  • nocompress:不使用gzip压缩。

notifempty

空文件是否转储。

  • ifempty:空文件也转储。
  • notifempty:空文件不触发转储。