昇腾社区首页
中文
注册

发现原理

节点故障的发现主要通过MindCluster NodeDMindCluster Volcano组件实现。MindCluster NodeD需要部署在每个有NPU的计算节点上,且节点需要配置了nodeDEnable=on(表示启用NodeD检测)标签,节点心跳检测特性才会生效,可执行kubectl label nodes nodeName nodeDEnable=on --overwrite命令来开启MindCluster NodeD检测。

  • 5.0.1及以下版本。

    MindCluster NodeD每隔5秒(默认)会更新本节点的Node Annotations字段,字段说明见表1

    表1 Annotations字段说明

    说明

    noded/heartbeat-interval

    int类型,单位为秒,默认值为5。

    表示心跳发送间隔时间,可参见配置MindCluster NodeD中的步骤2修改取值,并重启MindCluster NodeD后修改生效。

    noded/heartbeat

    数值范围支持64位的int类型,单位为秒,如:1703836707。

    表示当前节点的心跳时间,是自1970年1月1日开始(UTC)所经过的秒数。

  • 5.0.1.1及以下上版本。

    MindCluster NodeD每隔5秒(默认)会更新本节点的Node-Info ConfigMap内容,字段说明见表2

    表2 ConfigMap字段说明

    值类型

    说明

    HeartbeatInterval

    int类型,单位为秒,默认值为5

    表示心跳发送间隔时间,可参见配置MindCluster NodeD中的步骤2修改取值,并重启MindCluster NodeD后修改生效。

    HeartbeatTime

    数值范围支持64位的int类型,单位为秒,如:1703836707。

    表示当前节点的心跳时间,是自1970年1月1日开始(UTC)所经过的秒数。

MindCluster Volcano通过计算发现MindCluster NodeD最近一次上报心跳之后的一段时间内未再次上报心跳(大于两次心跳上报间隔的阈值)时,MindCluster Volcano会认为MindCluster NodeD所在节点故障,后续任务不会调度到该节点。如果已有任务在该节点且任务配置了重调度开关,则任务会被自动调度到健康节点;当两次心跳上报间隔小于或等于阈值时,MindCluster Volcano认为MindCluster NodeD所在节点恢复正常可重新调度任务到该节点。

计算公式两次心跳上报间隔的阈值 = 心跳发送间隔时间 x 3,其中3表示MindCluster Volcano会固定重试3次。