GPU-HPN节点故障监控和恢复

AI训练任务的运行过程中,当GPU节点发生故障时,会导致任务卡住甚至异常终止,影响任务的运行效率。ACS集群提供了对GPU-HPN节点的故障监控能力,当节点出现异常时,ACS会标记节点,并通过Kubernetes事件(Event)、状态(Condition)等方式上报。本文介绍GPU-HPN节点的故障监控项、数据获取方式以及修复流程。

节点故障处理流程

ACS会持续对GPU-HPN节点进行健康检查,当节点出现故障时,建议您参考以下流程,配合ACS的自愈机制,完成对故障节点的修复。

image
  1. 故障通知

    ACS会通过事件(Event)、Node状态(Condition)上报故障原因,并在节点上增加污点(Taint),避免后续Pod调度到该故障节点。

  2. 清空故障节点

    收到故障通知后,建议您及时驱逐故障节点上的Pod。

  3. 修复故障节点

    故障节点被清空后,ACS将进行自动修复。

  4. 节点自愈恢复

    ACS完成节点修复后,Node中的相关污点、状态会被自动恢复为正常状态,新创建的Pod可以正常使用。

故障通知

对于故障的GPU-HPN节点,ACS将在Node以及对应的Pod中,以ConditionEvent等形式提供故障信息,具体如下。

Node

  • NodeLabel上标记节点异常,用于筛选查看。

    metadata:
      labels:
        alibabacloud.com/node-anomaly: "true"
  • Node上增加名称为alibabacloud.com/node-anomaly的污点,新提交的Pod默认不会调度到该节点。

    spec:
      taints:
      - effect: NoSchedule
        key: alibabacloud.com/node-anomaly
        timeAdded: "2024-10-16T06:09:27Z"
  • Nodeconditions(NodeAnomaly类型)中记录详细的故障信息。

    status:
      conditions:
      - lastHeartbeatTime: "2024-10-16T06:09:31Z"
        lastTransitionTime: "2024-10-16T06:09:31Z"
        message: The node has encountered an anomaly.
        reason: NodeBroken
        status: "True"
        type: NodeAnomaly

    conditions中各字段的说明如下:

    字段

    说明

    更新时机

    type

    NodeAnomaly,表示节点异常。

    固定值,Node生命周期内不会变化。

    status

    当前是否有故障。

    • True:有故障。

    • False:无故障。

    节点故障状态发生变化时更新。

    reason

    故障类型。包括以下两种:

    • NodeBroken:GPU-HPN整机故障。

    • GPUCardBroken:GPU卡级别的故障。

    节点故障状态发生变化时更新。

    message

    记录了故障的详细信息。

    节点故障状态发生变化时更新。

    lastTransitionTime

    故障状态发生变化的时间点。

    节点故障状态发生变化时更新。

    lastHeartbeatTime

    定时更新的心跳时间。

    节点故障状态发生变化时,或者距上次更新超过5分钟时更新。

  • Nodeconditions(FaultHealing类型)中记录详细的自愈修复情况。当节点自愈进度发生变化时会更新。

    status:
      conditions:
      - lastHeartbeatTime: "2025-03-24T11:14:48Z"
        lastTransitionTime: "2025-03-24T11:14:48Z"
        message: node fault healing success
        reason: Success
        status: "False"
        type: FaultHealing

    conditions中各字段的说明如下:

    字段

    说明

    type

    FaultHealing,表示节点自愈中。

    status

    当前是否处于节点自愈中。

    • True:正常自愈中。

    • False:已完成自愈。

    reason

    节点自愈状态。

    • Success、Finished:自愈完成。

    • InProgress:正在自愈中。

    • Failed:自愈失败。

    message

    记录了自愈进度的详细信息。

    lastTransitionTime

    自愈进度发生变化时会更新。

    lastHeartbeatTime

    自愈进度发生变化时会更新。

Pod Event

已经调度到故障节点的Pod会收到Warning事件。

重要

建议您在收到故障信息后,将故障节点的Pod尽快驱逐,ACS将在所有Pod驱逐完成后,自动开始节点修复自愈。

reason: NodeBroken
type: Warning
message: 'The pod is proposed to be evicted at 2024-10-16 07:21:54 +0000 UTC, reason: xxx'

Event中各字段的说明如下:

字段

说明

type

固定值,为Warning。

reason

故障类型。包括以下两种:

  • NodeBroken:GPU-HPN整机故障。

  • GPUCardBroken:GPU卡级别的故障。

message

记录了自愈进度的详细信息。