(可选)配置组件

如果用户在安装Ascend Device PluginNodeD时,已经配置了弹性训练相关功能,则可以跳过本章节;若没有配置,则需要在对组件MindCluster Ascend Device PluginMindCluster NodeD进行相关配置才能正常使用本特性。

配置Ascend Device Plugin

在重调度策略开启的情况下,Ascend Device Plugin的异常也会触发故障重调度。

  1. 修改Ascend Device Plugin组件的启动YAML,修改如下所示加粗部分。

    ...
          containers:
          - image: ascend-k8sdeviceplugin:v7.0.RC1
            name: device-plugin-01
            resources:
              requests:
                memory: 500Mi
                cpu: 500m
              limits:
                memory: 500Mi
                cpu: 500m
            command: [ "/bin/bash", "-c", "--"]
            args: [ "device-plugin  
                     -useAscendDocker=true 
                     -volcanoType=true                    # 重调度场景下必须使用Volcano。
                     -autoStowing=true                    # 是否开启自动纳管开关,默认为true;设置为false代表关闭自动纳管,当芯片健康状态由unhealthy变为healthy后,不会自动加入到可调度资源池中;关闭自动纳管,当芯片参数面网络故障恢复后,不会自动加入到可调度资源池中。该特性仅适用于Atlas 训练系列产品
                     -listWatchPeriod=5                   # 健康状态检查周期,范围[3,60];默认5秒。
                     -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log 
                     -logLevel=0" ]
            securityContext:
              privileged: true
              readOnlyRootFilesystem: true
    ...

  2. K8s管理节点执行以下命令,启动Ascend Device Plugin

    kubectl apply -f device-plugin-xxx-v{version}.yaml
    如在Atlas 训练系列产品启动该组件,示例如下。
    kubectl apply -f device-plugin-volcano-v7.0.RC1.yaml

配置NodeD

用户可以通过手动修改NodeD的启动YAML来配置节点状态上报间隔。

  1. 执行以下命令,编辑NodeD组件的启动YAML文件。

    vi noded-v{version}.yaml

  2. 在YAML文件的“args”行修改“-reportInterval”参数,如下所示:

    ...
              env:
                - name: NODE_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
              imagePullPolicy: Never
              command: [ "/bin/bash", "-c", "--"]
              args: [ "/home/hwMindX/noded -logFile=/var/log/mindx-dl/noded/noded.log -logLevel=0 -reportInterval=5" ]
              securityContext:
                readOnlyRootFilesystem: true
                allowPrivilegeEscalation: false
                capabilities:
                  drop: [ "ALL" ]
                runAsUser: 9000
                runAsGroup: 9000
              volumeMounts:
                - name: log-noded
    ...
    • K8s默认40秒未收到节点响应时将该节点置为NotReady,如未修改K8s的该配置,NodeD的“节点状态上报间隔”使用默认值“5”即可,无需修改。
    • 当K8s APIServer请求压力变大时,可根据实际情况增大间隔时间,以减轻APIServer压力。