(可选)配置总线设备故障级别
在制作Ascend Device Plugin镜像时,会将故障级别配置文件SwitchFaultCode.json内置在镜像中,启动Ascend Device Plugin时会读取这个文件的默认配置,作为当前故障处理依据。
如果用户想要自定义故障级别或者优雅容错相关配置,可以在集群中创建ConfigMap文件(mindx-dl-fault-config)。
- 如果Ascend Device Plugin启动时,集群中已经存在mindx-dl-fault-config,Ascend Device Plugin会优先按照已存在的mindx-dl-fault-config中配置的内容,作为当前故障处理依据。
- 如果重新安装Ascend Device Plugin后,集群中已经存在mindx-dl-fault-config,Ascend Device Plugin的默认SwitchFaultCode.json将不会生效,使用集群中已经存在的mindx-dl-fault-config。
- 如果重新安装Ascend Device Plugin后,集群中已经存在mindx-dl-fault-config且该ConfigMap中存在SwitchFaultCode.json字段,Ascend Device Plugin的默认SwitchFaultCode.json将不会生效,使用集群中已经存在的mindx-dl-fault-config。
- 若想要使用SwitchFaultCode.json默认配置,可以删除mindx-dl-fault-config,使Ascend Device Plugin读取默认SwitchFaultCode.json文件。
- 如果ConfigMap文件内容存在格式错误等问题,Ascend Device Plugin会默认读取镜像中内置的ConfigMap文件的内容,作为当前故障处理依据。
使用SwitchFaultCode.json配置故障级别
以总线设备故障码[0x00f1ff09,155913,cpu,na]为例。该故障码由四部分组成:告警ID、故障ID、对端设备类型、端口号,如表1 故障码说明所示。
参数 |
说明 |
取值 |
---|---|---|
告警ID |
在以上示例中,告警ID为0x00f103b6。 |
带内带外一致 |
故障ID |
在以上示例中,故障ID为155909。 |
带内带外一致 |
对端设备类型 |
该故障所对应的对端设备类型 在以上示例中,对端设备类型为na。 |
取值为na:该故障为芯片故障,不涉及对端设备。 取值为cpu:该故障所对应的对端设备为cpu。 取值为npu:该故障所对应的对端设备为NPU。 取值为L2:该故障所对应的对端设备为L2。 |
端口号 |
在以上示例中,端口号为na。 |
取值只能为na |
将当前故障的处理策略NotHandleFaultCodes(无需处理)修改为SeparateFaultCodes(隔离芯片,进行任务重调度)的操作示例如下。
- 登录环境,进入Ascend Device Plugin解压目录。
- 执行以下命令,查询是否已经基于SwitchFaultCode.json文件创建了mindx-dl-fault-config。
- 执行以下命令,创建动态配置故障码所需ConfigMap文件(mindx-dl-fault-config)。
kubectl create cm mindx-dl-fault-config -n kube-system --from-file=./faultCode.json --from-file=./SwitchFaultCode.json --from-literal="PollInterval=300"
回显示例如下。1
configmap/mindx-dl-fault-config created
表2 参数说明 参数名
是否必选
说明
mindx-dl-fault-config
是
动态配置故障码所需的ConfigMap文件名称,不能修改该文件名称。
kube-system
是
mindx-dl-fault-config所在命名空间,不能修改该命名空间名称。
SwitchFaultCode.json
是
用于保存故障码,必须与SwitchFaultCode.json文件名称保持一致。
- 执行以下命令,编辑mindx-dl-fault-config文件。
kubectl edit cm -n kube-system mindx-dl-fault-config
- 在mindx-dl-fault-config文件中,找到故障码[0x00f1ff09,155913,cpu,na]。
Data ==== SwitchFaultCode.json: ---- {"NotHandleFaultCodes":[0x00f1ff09,155913,cpu,na], ...
- 将故障码在(NotHandleFaultCodes)中删除,并添加到(SeparateFaultCodes)中。
Data ==== SwitchFaultCode.json: ---- {"NotHandleFaultCodes":[],
... "SeparateFaultCodes":["0x00f1ff09,155913,cpu,na","[0x00f103b0,155907,na,na]"…] }
- 修改完成后,按“Esc”键,输入:wq!保存并退出。
- 等mindx-dl-fault-config文件更新生效后(PollInterval取值,不指定则为300s),查看操作是否成功。
- 执行以下命令,查询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
- 通过查询到的组件日志名称,查询Ascend Device Plugin的组件日志信息。
kubectl logs -n kube-system ascend-device-plugin-daemonset-910-jmlf5
若日志出现“load switch fault code from configmap success”,表示手动配置故障码操作成功。
- 执行以下命令,查询Ascend Device Plugin组件日志名称。