(可选)配置总线设备故障级别

在制作Ascend Device Plugin镜像时,会将故障级别配置文件SwitchFaultCode.json内置在镜像中,启动Ascend Device Plugin时会读取这个文件的默认配置,作为当前故障处理依据。

如果用户想要自定义故障级别或者优雅容错相关配置,可以在集群中创建ConfigMap文件(mindx-dl-fault-config)。

使用SwitchFaultCode.json配置故障级别

以总线设备故障码[0x00f103b6,155909,na,na]为例。该故障码由四部分组成:告警ID、故障ID、对端设备类型、端口号,如表1 故障码说明所示。

表1 故障码说明

参数

说明

取值

告警ID

在以上示例中,告警ID为0x00f103b6。

带内带外一致

故障ID

在以上示例中,故障ID为155909。

带内带外一致

对端设备类型

该故障所对应的对端设备类型

在以上示例中,对端设备类型为na。

na: 该故障为芯片故障,不涉及对端设备。

cpu: 该故障所对应的对端设备为cpu。

npu: 该故障所对应的对端设备为NPU。

L2: 该故障所对应的对端设备为L2。

端口号

在以上示例中,端口号为na

取值只能为na

将当前故障的处理策略NotHandleFaultCodes(无需处理)修改为SeparateFaultCodes(隔离设备,进行任务重调度)的操作示例如下。

  1. 登录环境,进入Ascend Device Plugin解压目录。
  2. 执行以下命令,查询是否已经基于SwitchFaultCode.json文件创建了mindx-dl-fault-config。

    kubectl describe cm -n kube-system mindx-dl-fault-config
    • 如果mindx-dl-fault-config已经存在,且存在SwitchFaultCode.json的相关字段,执行4编辑该文件。
    • 如果mindx-dl-fault-config已经存在,但是不存在SwitchFaultCode.json的相关字段,需要先保存mindx-dl-fault-config内容,再删除mindx-dl-fault-config文件后,执行3创建该文件。
    • 如果不存在mindx-dl-fault-config,执行3创建该文件。

  3. 执行以下命令,创建动态配置故障码所需ConfigMap文件(mindx-dl-fault-config)。

    kubectl create cm mindx-dl-fault-config -n kube-system  --from-file=./faultCode.json --from-file=./SwitchFaultCode.json
    回显示例如下。
    1
    configmap/mindx-dl-fault-config created
    
    表2 参数说明

    参数名

    是否必选

    说明

    mindx-dl-fault-config

    动态配置故障码所需的ConfigMap文件名称,不能修改该文件名称。

    kube-system

    mindx-dl-fault-config所在命令空间,不能修改该命名空间名称。

    SwitchFaultCode.json

    用于保存故障码,必须与SwitchFaultCode.json文件名称保持一致。

  4. 执行以下命令,编辑mindx-dl-fault-config文件。

    kubectl edit cm -n kube-system mindx-dl-fault-config

  5. 在mindx-dl-fault-config文件中,找到故障码[0x00f103b6,155909,na,na]。

    Data
    ====
    SwitchFaultCode.json:
    ----
    {"NotHandleFaultCodes":[0x00f103b6,155909,na,na],
    ...

  6. 将故障码在(NotHandleFaultCodes)中删除,并添加到(SeparateFaultCodes)中。

    Data
    ====
    SwitchFaultCode.json:
    ----
    {"NotHandleFaultCodes":[],
    ...
    "SeparateFaultCodes":["[0x00f103b6,155909,na,na]","[0x00f103b0,155907,na,na]"…]
    }

  7. 修改完成后,按“Esc”键,输入:wq!保存并退出。
  8. 等mindx-dl-fault-config文件更新生效后(PollInterval取值,不指定则为300s),查看操作是否成功。

    1. 执行以下命令,查询Ascend Device Plugin组件日志名称。
      kubectl get pods -A | grep ascend-device-plugin
      回显示例如下:
      1
      kube-system      ascend-device-plugin-daemonset-910-jmlf5   1/1     Running   0              6h34m
      
    2. 通过查询到的组件日志名称,查询Ascend Device Plugin的组件日志信息。
      kubectl logs -n kube-system ascend-device-plugin-daemonset-910-jmlf5

      若日志出现“load switch fault code from configmap success”,表示手动配置故障码操作成功。