故障类型 | 说明 |
GPUDeviceLost | GPU 设备丢失,无法被系统识别 |
GPUDoubleBitEccError | GPU 双位 ECC 错误,不可纠正的内存错误 |
GPUHighSingleBitEccError | GPU 单位 ECC 错误超过阈值 |
GPUInfoROMCorrupted | GPU InfoROM 损坏 |
GPUNvlinkError | NVLink 通信错误 |
GPUPCIeError | PCIe 接口异常 |
GPUPendingRetiredPages | GPU 待退役内存页 |
GPUPowerError | GPU 电源问题 |
GPURemappingRowsError | GPU 内存行映射错误 |
GPUTempError | GPU 温度过高 |
GPUXIDFatalError | GPU 致命 XID 错误 |
GPUXIDWarningError | GPU 警告 XID 错误 |
故障类型 | 说明 |
HygonGPUDeviceLost | GPU 设备丢失,驱动或 PCIe 问题导致设备无法识别 |
HygonGPUDriverError | GPU 驱动异常,重启后可恢复 |
HygonGPUTempError | GPU 温度过高,需检查散热 |
HygonGPUEccError | GPU 内存 ECC 错误,可能存在硬件损坏 |
HygonGPUPowerError | GPU 电源异常,需检查供电 |
自愈策略 | 执行步骤 | 适用故障类型 |
完整自愈流程 | 隔离 → 排空 → 重启 → 解封 | GPUDeviceLost、GPUNvlinkError、GPUPCIeError、GPUPendingRetiredPages、GPUXIDWarningError |
仅隔离排空 | 隔离 → 排空 | GPUDoubleBitEccError、GPUHighSingleBitEccError、GPUInfoROMCorrupted、GPUPowerError、GPURemappingRowsError、GPUTempError、GPUXIDFatalError |
自愈策略 | 执行步骤 | 适用故障类型 |
完整自愈流程 | 隔离 → 排空 → 重启 → 解封 | HygonGPUDeviceLost、HygonGPUDriverError |
仅隔离排空 | 隔离 → 排空 | HygonGPUTempError、HygonGPUEccError、HygonGPUPowerError |
gpu-node-healer.yaml:apiVersion: node.healing.tke.cloud.tencent.com/v1kind: NodeHealermetadata:name: gpu-cluster-healerspec:nodeSelector:matchLabels:node-healing.tke.cloud.tencent.com/belong-to: gpu-cluster-healercloud.tencent.com/provider: tencentcloudnode.tke.cloud.tencent.com/accelerator-type: gpumachineHealingTemplate:name: "default-healing-template"kind: "MachineHealingTemplate"apiVersion: "node.healing.tke.cloud.tencent.com/v1"unhealthyConditions:- type: GPUXIDFatalError # GPU 致命错误enableCheck: trueenableHealing: truedurationTime: "1m"priority: 100- type: GPUDeviceLost # GPU 设备丢失enableCheck: trueenableHealing: truedurationTime: "5m"priority: 80nodeHealingPolicy:maxHealConcurrency: 3minNodeCoolingMinutes: 30
kubectl apply -f gpu-node-healer.yaml
hygon-gpu-node-healer.yaml:apiVersion: node.healing.tke.cloud.tencent.com/v1kind: NodeHealermetadata:name: hygon-gpu-cluster-healerspec:nodeSelector:matchLabels:node-healing.tke.cloud.tencent.com/belong-to: hygon-gpu-cluster-healercloud.tencent.com/provider: tencentcloudnode.tke.cloud.tencent.com/accelerator-type: dcumachineHealingTemplate:name: "default-healing-template"kind: "MachineHealingTemplate"apiVersion: "node.healing.tke.cloud.tencent.com/v1"unhealthyConditions:- type: HygonGPUDeviceLost # 海光 GPU 设备丢失(完整自愈)enableCheck: trueenableHealing: truedurationTime: "5m"priority: 85- type: HygonGPUDriverError # 海光 GPU 驱动异常(完整自愈)enableCheck: trueenableHealing: truedurationTime: "5m"priority: 80- type: HygonGPUTempError # 海光 GPU 温度过高(仅隔离排空)enableCheck: trueenableHealing: truedurationTime: "5m"priority: 85- type: HygonGPUEccError # 海光 GPU ECC 错误(仅隔离排空)enableCheck: trueenableHealing: truedurationTime: "3m"priority: 90- type: HygonGPUPowerError # 海光 GPU 电源异常(仅隔离排空)enableCheck: trueenableHealing: truedurationTime: "3m"priority: 90nodeHealingPolicy:maxHealConcurrency: 3minNodeCoolingMinutes: 30
kubectl apply -f hygon-gpu-node-healer.yaml
nodeSelector 中定义的标签来选择需要自愈的节点。您需要为目标节点添加与配置文件中 nodeSelector.matchLabels 一致的标签。下述示例配置为例,执行以下命令为 GPU 节点添加标签:kubectl label node <node-name> node-healing.tke.cloud.tencent.com/belong-to=gpu-cluster-healer
kubectl label node \\-l node.tke.cloud.tencent.com/accelerator-type=gpu \\node-healing.tke.cloud.tencent.com/belong-to=gpu-cluster-healer
kubectl get nodehealer
NAME AGEgpu-cluster-healer 1h
kubectl get node <gpu-node-name> -o jsonpath='{.status.conditions}' | jq
kubectl get healingtask -n kube-system
kubectl describe node 命令查看节点 Condition 和事件,确认具体的故障类型。nvidia-smi -q 命令(NVIDIA GPU)或 hy-smi -q 命令(海光 DCU GPU)检查 GPU 详细状态。kubectl uncordon 命令解除节点隔离,并移除自愈相关的 Taint。参数 | 类型 | 说明 |
type | string | |
enableCheck | bool | 是否启用检测。 |
enableHealing | bool | 是否启用自愈。 |
durationTime | string | 故障持续多长时间后触发自愈,格式如 1m、5m。 |
priority | int | 优先级,数值越大优先级越高(0-100)。 |
故障类型 | 建议值 | 说明 |
严重硬件故障(ECC 错误、XID 致命错误等) | 1m | 快速响应,避免数据损坏。 |
一般硬件故障(设备丢失、NVLink 错误等) | 5m | 适当观察,避免误判。 |
可恢复问题(警告类错误) | 10m | 延长观察,可能自动恢复。 |
参数 | 说明 | 建议值 |
maxHealNodesPerDay | 每天最大自愈节点数 | 10-20 |
maxHealNodesPerHour | 每小时最大自愈节点数 | 3-5 |
maxHealConcurrency | 最大并发自愈数 | 2-3 |
minNodeCoolingMinutes | 同一节点两次自愈的最小间隔(分钟) | 30-60 |
kubectl get ds -n kube-system | grep node-problem-detector
kubectl get pod -n kube-system -l app=node-problem-detector -o wide
kubectl get node <node-name> --show-labels
cloud.tencent.com/provider=tencentcloud 标签)。durationTime 配置。kubectl describe nodehealer gpu-cluster-healer
kubectl label node <node-name> node-healing.tke.cloud.tencent.com/belong-to-
文档反馈