节点硬件故障
断点续训针对节点故障中的节点硬件故障中的不同级别故障进行分级容错处理。NodeD发现故障时会获取到当前故障的故障码。
故障级别 |
处理方式 |
说明 |
|---|---|---|
NotHandleFault |
无需处理 |
对任务无影响 |
PreSeparateFault |
该节点上有任务则不处理,后续调度时不调度任务到该节点 |
可能导致任务受到影响 |
SeparateFault |
任务重调度 |
任务一定会受到影响 |
注: 故障级别的高低为NotHandleFault < PreSeparateFault < SeparateFault。 |
||
节点状态 |
最高故障级别 |
处理方式 |
说明 |
|---|---|---|---|
Healthy |
NotHandleFault |
无需处理 |
该节点为健康节点,可以正常训练。 |
SubHealthy |
PreSeparateFault |
该节点上有任务则不处理,后续调度时不调度任务到该节点 |
该节点为亚健康节点,暂时可能对任务无影响,待任务受到影响退出后,后续不会再调度任务到该节点。 |
UnHealthy |
SeparateFault |
任务重调度 |
该节点为故障节点,将影响训练任务,立即将任务调离该节点。 |
注:
|
|||
操作步骤
- 登录环境,进入NodeD解压目录。
- 执行以下命令,创建动态配置故障级别所需ConfigMap文件(mindx-dl-node-fault-config)。
kubectl create cm mindx-dl-node-fault-config -n mindx-dl --from-file=./NodeDConfiguration.json
回显示例如下:configmap/mindx-dl-node-fault-config created
表3 参数说明 参数名称
说明
mindx-dl-node-fault-config
创建的ConfigMap文件名称,不能修改该文件名称。
mindx-dl
命名空间名称,不能修改该命名空间。
NodeDConfiguration.json
用于配置故障码以及对应的故障级别,必须与NodeDConfiguration.json文件名称保持一致。
- 执行以下命令,编辑mindx-dl-fault-config文件。
kubectl edit cm -n mindx-dl mindx-dl-node-fault-config
- 在mindx-dl-node-fault-config文件中,找到故障码0100001D。
"FaultTypeCode": { "NotHandleFaultCodes":[ "0100001D","03000009","03000013","0300000D","03000011" ], ... ], ...
自定义故障级别时,若不小心导致出现以下问题,则本次修改无效,NodeD将会使用上一次保存的配置进行处理。- 文件格式异常或故障码取值错误,故障码只能为8位的包含数字和字母的字符串。
- 同一故障码同时配置在多个故障级别中。
- 将故障码0100001D在NotHandleFaultCodes中删除,并添加到PreSeparateFaultCodes中。
"FaultTypeCode": { "NotHandleFaultCodes":[ "03000009","03000013","0300000D","03000011" ], "PreSeparateFaultCodes":[ "28000037","00000011", "0100001D" ... ], ... - 修改完成后,按“Esc”键,输入:wq!保存并退出。
- 等mindx-dl-node-fault-config文件更新后,查看操作是否成功。
- 执行以下命令,查询NodeD组件日志名称。
kubectl get pods -A | grep noded
回显示例如下:mindx-dl noded-c5f52 1/1 Running 0 2m16s
- 通过查询到的组件日志名称,查询NodeD的组件日志信息。
kubectl logs noded-c5f52 -n mindx-dl -f
若日志出现“update fault config success”,表示动态配置故障码操作成功。
- 执行以下命令,查询NodeD组件日志名称。
父主题: (可选)动态配置故障级别