ACK 节点池提供统一的节点故障自愈能力,在 ECS、灵骏(含超节点)等多种算力类型上自动发现 GPU 故障、节点底层故障等异常,并按自定义流程修复,减少人工值守和业务受损时间。
节点自愈为白名单功能,请联系技术服务团队开通。
适用范围
节点池类型:ECS 节点池、灵骏节点池(含超节点)。
故障类型:节点故障、GPU 故障、系统与组件故障。
组件依赖:GPU 故障、系统与组件故障的检测依赖
ack-node-problem-detector(NPD)组件版本 1.2.30 及以上。地域限制:暂不支持专属云地域。
自愈机制说明
节点自愈持续监测节点上报的故障信号(云监控底层事件、底层系统事件、NPD 检测的 GPU 故障和系统与组件故障等),命中故障后统一转换为 Kubernetes Event 和 Node Condition,再按自愈规则调用对应修复能力完成修复;修复进度通过 Kubernetes Event 透出。
自愈流程
故障发现:ACK 持续监测节点的底层事件与 NPD 上报的异常,命中故障后在节点上写入对应的 Node Condition,并生成自愈计划。
故障处理:按自愈规则依次执行修复流程。各步骤可按需启用或跳过,启用的步骤均可开启人工介入,开启后 ACK 在获得授权确认后再执行。
节点隔离:将故障节点标记为不可调度,阻止新工作负载调度到该节点。
节点排水:驱逐节点上的工作负载。
自动修复:执行该故障类型对应的修复动作(如维修、重启等)。
解除节点隔离:修复后将节点恢复为可调度。
故障按优先级处理:高优先级的维修类故障优先修复,低优先级的重启类故障延后执行,直至高优先级故障处理完毕。
注意事项
如果您此前在集群中安装其他具有节点自愈功能的软件,请详细评估后再使用本能力,避免多套自愈逻辑冲突。
自定义故障修复流程中,任意步骤开启人工介入后,请及时完成授权,否则 ACK 将暂停执行当前及后续流程,节点可能停留在受损状态。
灵骏节点发生节点类故障后,在修复阶段,ACK 将调用灵骏节点审批运维操作进行修复。请密切关注灵骏节点自身的运行状况及其在 ACK 集群中的节点状态,避免业务持续受损。
若故障自愈流程执行失败,请尽快登录集群手动修复,并将节点恢复为可调度状态。如需帮助,请联系售后支持。
开启节点自愈后,请务必开启报警管理功能,并启用集群GPU监控告警规则集、集群节点池运维事件报警规则集和集群节点自愈报警规则集。建议配置单独的报警群或联系人,以便在异常发生时自动接收告警通知并及时处理。
自愈规则配置
使用流程
从开通到生效,节点自愈通常包含以下步骤:
配置自愈规则:在创建节点池或存量节点池的托管配置中,创建自愈规则并选择故障类型与修复流程,详见自愈配置。
开启自动故障诊断(可选,仅支持ECS 节点池):在托管配置中勾选自动故障诊断,增强 GPU 硬件故障的深层诊断,详见开启自动故障诊断(ECS 深层诊断)。
开启报警:开启报警管理并启用节点自愈相关的报警规则集,详见配置报警。
观察与处理:通过 Kubernetes Event 查看自愈进度(详见节点自愈流程相关 Kubernetes 事件说明);需人工授权时及时授权,自愈失败时手动介入。
自愈配置
ACK 支持在创建节点池或修改存量节点池时开启节点自愈并定义自愈规则;启用后,也可在自愈规则管理页面集中新增与管理规则。
开启入口
方式一:创建节点池时配置。创建节点池时,在托管配置区域选择自定义托管,按页面提示启用节点自愈并完成自愈规则的创建。完整配置项说明,请参见创建和管理节点池。
方式二:存量节点池中配置。在节点池列表中,单击目标节点池操作列对应的
> 开启托管(未启用托管)或托管配置(已启用托管),按页面提示完成自愈规则的创建与节点自愈的启用。
配置自愈规则
进入规则配置入口:通过节点池创建或配置界面,或在自愈规则页面单击创建自愈规则,进入创建自愈规则面板。
配置子规则:
选择故障类型与修复行为:根据故障类型(节点故障/GPU 故障/系统与组件故障)选择对应的修复动作(参见上文故障说明)。
配置修复流程:以下步骤均支持开启人工介入,开启后 ACK 在获得授权后才执行。
配置项
说明
节点隔离
将故障节点标记为不可调度(
spec.unschedulable=true),阻止新负载调度。节点排水
需先开启节点隔离。逐个驱逐节点上的工作负载,默认超时 300 秒(可调整),遵循 PDB;DaemonSet、OpenKruise Advanced DaemonSet 管理的 Pod 及带
alibabacloud.com/evict-pod=true标签的 Pod 不会被驱逐;超时后自动进入后续流程。自动修复
执行故障类型对应的修复动作(详见上文故障说明)。
解除节点隔离
需先开启节点隔离。将节点恢复为可调度(
spec.unschedulable=false)。若节点在进入修复流程前已不可调度,则本步骤不会将其恢复为可调度。
开启自动故障诊断(ECS 深层诊断)
开启自动故障诊断后,ACK 通过节点侧监控探针 ack-node-problem-detector(NPD)发现潜在异常,并主动发起 GPU 硬件设备的深层诊断。确认存在异常时,ACK 会通过 Kubernetes Event、Node Condition 和 ECS 系统事件向您报警,您可结合节点自愈规则进行自动响应。
适用范围
节点池为 ECS 节点池。
NPD 组件版本为 1.2.36 及以上。
开启方式
新节点池
创建节点池时,在托管配置区域选择自定义托管,并勾选自动故障诊断。
存量节点池
已开启托管的节点池:点击目标节点池对应操作列下的,在托管配置窗口中勾选自动故障诊断。
未开启托管的节点池:点击目标节点池对应操作列下的,在开启托管窗口中选择自定义托管,并勾选自动故障诊断。
以下 NPD 检测项会触发 ECS 深层诊断:
错误项 | 描述 |
| Double Bit ECC Error(DBE)。GPU 检测到不可纠正的错误时记录此事件。 |
| GPU 内部微控制器停机。 |
| NVLink Error(NVLink 链路错误)。 |
| GPU has fallen off the bus(GPU 从总线掉线)。 |
| Context Switch Timeout Error(上下文切换超时错误)。 |
| 等待 GSP 核心响应 RPC 消息时发生超时。 |
| GPU 的 GSP 核心上运行的代码出错。 |
| NVLink: RLW Error(NVLink RLW 错误)。 |
| GPU Recovery Action Changed(GPU 恢复动作已变更)。 |
| 设备的外部电源线连接不当。 |
配置报警
开启节点自愈后,请务必开启报警管理功能,并启用集群GPU监控告警规则集、集群节点池运维事件报警规则集和集群节点自愈报警规则集。建议配置单独的报警群或联系人,以便在异常发生时自动接收告警通知并及时处理。
关于规则集启用操作,请参见容器服务报警管理。
故障说明
下表按故障类型说明触发自愈的 Node Condition、修复行为与故障恢复的判断标准。
节点故障
适用于 ECS、灵骏(含超节点)节点的底层硬件异常与需重启类故障。
灵骏
故障名称 | 底层事件名称 | Kubernetes Node Condition | 故障说明 | 修复行为 | 故障恢复判断标准 |
因灵骏节点底层硬件异常需维修修复 |
resourceType: Node |
| 灵骏节点发生硬件故障,需进行维修。维修完成后,节点本地数据可能丢失。 | 维修灵骏节点 重要 灵骏节点维修过程中,本地盘数据可能丢失,请您提前备份。若您将容器运行时及 Kubelet 目录挂载至本地盘,请在维修结束后将该节点从 ACK 集群节点列表中移除再重新加入。 | 同时满足以下条件:
|
因灵骏节点底层异常需重启修复 |
resourceType: Node |
| 灵骏节点发生故障,建议您尽快重启节点以尝试修复。 | 重启节点 | 同时满足以下条件:
|
因灵骏节点底层硬件异常需维修修复(受超节点影响) |
resourceType: HyperNode |
| 灵骏超节点发生硬件故障,需进行维修,建议您尽快授权修复超节点。ACK 自愈处理过程中,会针对超节点中每个子节点发起自愈流程,当所有子节点自愈流程进入修复步骤时,ACK 会统一发起对超节点的授权修复操作。 | 维修灵骏节点 重要 灵骏节点维修过程中,本地盘数据可能丢失,请您提前备份。若您将容器运行时及 Kubelet 目录挂载至本地盘,请在维修结束后将该节点从 ACK 集群节点列表中移除再重新加入。 | 同时满足以下条件:
|
因灵骏节点底层异常需重启修复(受超节点影响) |
resourceType: HyperNode |
| 灵骏超节点发生故障,建议您尽快授权修复超节点。ACK 自愈处理过程中,会针对超节点中每个子节点发起自愈流程,当所有子节点自愈流程进入修复步骤时,ACK 会统一发起对超节点的授权修复操作。 | 重启节点 | 同时满足以下条件:
|
ECS
故障名称 | 底层事件名称 | Kubernetes Node Condition | 故障说明 | 修复行为 | 故障恢复的判断标准 |
因系统维护实例需重新部署(计划中) |
|
| 阿里云检测到 ECS 实例的底层宿主机存在潜在软硬件故障风险,可能导致实例重新部署(尚未成为故障)。可立即重新部署以规避风险,否则 ECS 将在 24~48 小时后触发重新部署。 详情请参见 ECS 系统事件概述。 | 重新部署节点 重要 重新部署节点过程中,本地盘数据可能丢失,请提前备份。 | 同时满足以下条件:
|
因系统维护实例需重新部署(问询中) |
|
| 阿里云检测到 ECS 实例的底层宿主机存在潜在软硬件故障风险,可能导致实例重新部署(尚未成为故障)。可立即重新部署以规避风险。 详情请参见 ECS 系统事件概述。 | 重新部署节点 重要 重新部署节点过程中,本地盘数据可能丢失,请提前备份。 | 同时满足以下条件:
|
因系统维护实例需重启(计划中) |
|
| 阿里云检测到 ECS 实例的底层宿主机存在潜在软硬件故障风险,可能导致实例重启(尚未成为故障)。可立即重启以规避风险,否则 ECS 将在 24~48 小时后触发重启。 详情请参见 ECS 系统事件概述。 | 重启节点 | 同时满足以下条件:
|
因系统维护实例需重启(问询中) |
|
| 阿里云检测到 ECS 实例的底层宿主机存在潜在软硬件故障风险,可能导致实例重启(尚未成为故障)。可立即重启以规避风险。 详情请参见 ECS 系统事件概述。 | 重启节点 | 同时满足以下条件:
|
完整的底层事件、Node Condition 与 Kubernetes Event 映射,请参见下文底层事件与 Node Condition 转换。
GPU 故障
依赖 NPD 组件检测。本类所有 GPU 故障的故障恢复判断标准一致:节点状态为 Ready,且触发故障的 Node Condition 已消除。
灵骏
故障名称 | Kubernetes Node Condition | 故障说明 | 修复行为 |
|
| Double Bit ECC Error (DBE)。当 GPU 检测到不可纠正的错误时,会记录此事件。 | 重启节点 |
|
| GPU 内部微控制器停机。 | 重启节点 |
|
| GPU 驱动在 GPU 内存中检测到不可纠正的错误。 | 重启节点 |
|
| GPU 驱动在 GPU 内存中检测到不可纠正的错误且抑制失败。 | 重启节点 |
|
| 在 GPU 的 GSP 核心上运行的代码出错。 | 重启节点 |
|
| GPU 内存页面访问错误(Page Fault)。 | 重启节点 |
|
| GPU 存在处于 Pending 状态的 Retired Pages。 | 重启节点 |
|
| 行重映射待处理,将在下一次 GPU 重置时执行。 | 重启节点 |
|
| 在等待 GSP 核心响应 RPC 消息时发生超时。 | 重启节点 |
GPU 故障的修复行为均为重启节点。当此类故障与需维修的灵骏节点系统事件同时发生时,为避免本地数据丢失,ACK 不会自动重启修复,本次自愈流程失败;可参考因灵骏节点底层硬件异常需维修修复配置自愈流。
ECS
故障名称 | Kubernetes Node Condition | 故障说明 | 修复行为 |
|
| Double Bit ECC Error (DBE)。当 GPU 检测到不可纠正的错误时,会记录此事件。 | 重启节点 |
|
| GPU 内部微控制器停机。 | 重启节点 |
|
| GPU 驱动在 GPU 内存中检测到不可纠正的错误。 | 重启节点 |
|
| GPU 驱动在 GPU 内存中检测到不可纠正的错误且抑制失败。 | 重启节点 |
|
| 在 GPU 的 GSP 核心上运行的代码出错。 | 重启节点 |
|
| GPU 内存页面访问错误(Page Fault)。 | 重启节点 |
|
| GPU 存在处于 Pending 状态的 Retired Pages。 | 重启节点 |
|
| 行重映射待处理,将在下一次 GPU 重置时执行。 | 重启节点 |
|
| 在等待 GSP 核心响应 RPC 消息时发生超时。 | 重启节点 |
系统与组件故障
依赖 NPD 组件检测。
故障名称 | Kubernetes Node Condition | 故障说明 | 修复行为 | 判断故障发生阈值 | 故障恢复判断标准 |
节点时间同步服务异常 |
| 时间同步服务(ntpd 或 chronyd)异常。 | 登录节点执行修复命令 | 10s | 节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
节点容器运行时不可用 |
| 容器运行时(Containerd 或 Docker Engine)已停止,节点不可用。 | 登录节点执行修复命令 | 90s | 节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
节点 Systemd 服务异常 |
| Systemd 状态异常,无法启动、销毁容器。 | 重启节点 | 90s | 节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
节点处于未就绪(NotReady)状态 |
| Kubelet 停止或心跳异常,导致节点处于未就绪(NotReady)状态。 | 登录节点执行修复命令 | 180s | 连续三次探测,节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 True。 |
节点文件系统进入只读状态 |
| 节点文件系统变为只读。 | 重启节点 | 90s | 节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
若在自动修复阶段开启了允许重启节点,当自动修复动作执行后异常仍未恢复时,ACK 将尝试重启节点以修复。
底层事件与 Node Condition 转换
ACK 自愈组件自动将灵骏节点、灵骏超节点和 ECS 节点产生的底层事件转换为对应的 Node Condition,并生成 Kubernetes Event。本节为完整的状态映射参考,排查故障时可按需查阅。
底层事件通过以下三个字段映射为 Node Condition:
Type:标识故障类型。Reason:标识事件当前所处的阶段。
灵骏 CMS 事件
灵骏裸金属节点的硬件与系统异常由灵骏管控以云监控服务(CMS)事件的形式发布,生命周期在"问询中 → 执行中 → 已完成 / 已终止"之间流转。ACK 周期性拉取这些事件,识别事件类型(如需维修的 Node.HardwareFault.HOST、需重启的 Node.FaultNeedReboot.HOST),并转换为节点上对应的 Node Condition。
以灵骏节点硬件故障 Node.HardwareFault.HOST CMS 事件为例:
ECS 系统事件
ECS 节点复用 ECS 系统事件体系,生命周期涵盖问询、待执行、执行中、已完成、已规避、已取消、执行失败等状态。ACK 通过调用 ECS 系统事件接口拉取实例运维事件(如 SystemMaintenance.Reboot、SystemMaintenance.Redeploy),并映射为节点上对应的 Node Condition。
以下是初始状态为 Inquiring 的 SystemMaintenance.Reboot 计划重启运维事件的状态变化:
普通灵骏节点底层事件转换
每个普通灵骏节点事件会转换为该节点在集群中的 Node Condition 和 Kubernetes Event。
底层事件状态 | 状态描述 | Node Condition | Kubernetes Event |
resourceType: node | 节点硬件机器故障问询中 |
|
|
resourceType: node | 节点硬件机器故障开始运维操作 |
|
|
resourceType: node | 节点硬件机器故障运维操作结束 |
|
|
resourceType: node | 节点硬件机器故障维修终止 |
|
|
resourceType: node | 节点需要重启修复的故障问询中 |
|
|
resourceType: node | 节点需要重启修复的故障开始重启 |
|
|
resourceType: node | 节点需要重启修复的故障重启结束 |
|
|
resourceType: node | 节点需要重启修复的故障运维终止 |
|
|
灵骏超节点底层事件转换
每个灵骏超节点事件会转换为该超节点下所有子节点对应的 Node Condition 和 Kubernetes Event。
底层事件状态 | 状态描述 | Node Condition | Kubernetes Event |
resourceType: hypernode | 节点硬件机器故障问询中 |
|
|
resourceType: hypernode | 节点硬件机器故障开始运维操作 |
|
|
resourceType: hypernode | 节点硬件机器故障运维操作结束 |
|
|
resourceType: hypernode | 节点硬件机器故障维修终止 |
|
|
resourceType: hypernode | 节点需要重启修复的故障问询中 |
|
|
resourceType: hypernode | 节点需要重启修复的故障开始重启 |
|
|
resourceType: hypernode | 节点需要重启修复的故障重启结束 |
|
|
resourceType: hypernode | 节点需要重启修复的故障运维终止 |
|
|
ECS 节点底层运维事件转换
ECS 节点的系统维护事件会转换为对应的 Node Condition 和 Kubernetes Event。
底层事件状态 | 状态描述 | Node Condition | Kubernetes Event |
| 因系统维护实例需重启问询中 |
|
|
| 因系统维护实例重启计划中 |
|
|
| 因系统维护实例重启执行中 |
|
|
| 因系统维护实例重启已完成 |
|
|
| 因系统维护实例重启已规避 |
|
|
| 因系统维护实例重启失败 |
|
|
| 因系统维护实例重启已取消(风险已规避) |
|
|
| 因系统维护实例需重新部署问询中 |
|
|
| 因系统维护实例重新部署计划中 |
|
|
| 因系统维护实例重新部署执行中 |
|
|
| 因系统维护实例重新部署已完成 |
|
|
| 因系统维护实例重新部署已规避 |
|
|
| 因系统维护实例重新部署已取消 |
|
|
节点自愈流程相关 Kubernetes 事件说明
节点池开启托管并关联自愈规则后,ACK 会将节点故障事件转换为 Kubernetes Event 和 Condition,同时通过 Kubernetes Event 上报自愈计划的进度。您可通过 kubectl describe node <节点名称> 或 kubectl get events 查看。
判断自愈是否成功
当节点恢复 Ready、且触发本次故障的 Node Condition 已消除(或满足对应故障类型的自愈成功判断条件),并出现 RepairPlanCompleted 事件、消息显示自愈成功时,表示本次自愈完成。若出现 NodeNotRecovery 或 RepairPlanFailed 事件,表示节点未恢复,需按注意事项登录集群手动修复。
常见自愈流程事件
事件(Reason) | 级别 | 说明 |
| Warning | 检测到灵骏节点故障事件,或故障事件状态有更新。 |
| Warning | 自愈计划已创建。 |
| Warning | 当前流程需要人工授权,事件消息中包含需授权的操作及授权方式。 |
| Warning | 授权标签已添加到节点标签。 |
| Normal | 自愈计划状态更新,记录当前执行的流程及执行结果。 |
| Normal | 已授权灵骏管控面执行修复操作。 |
| Warning | 修复完成后每 30 分钟检测一次节点状态;若节点未恢复,则触发此事件。 |
| Warning | 自愈计划结束,事件消息中显示自愈成功或失败。 |
| Warning | 检测到 ECS 节点故障事件,或故障事件状态有更新。 |
| Warning | 检测到灵骏超节点故障事件,或故障事件状态有更新。 |
| Warning | 超节点事件自愈,等待该超节点的所有子节点进入维修阶段。 |
特殊场景事件
事件(Reason) | 级别 | 说明 |
| Normal | 上一次自愈计划执行成功,但当前故障类型与上次不同,系统等待 10 分钟静默期后再创建新的自愈计划。 |
| Warning | 当前故障已被最近一次自愈成功处理,但节点实际未恢复,需人工介入排查。 |
| Warning | 当前故障对应的自愈计划执行失败,节点未恢复,需人工介入排查。 |
| Warning | 自愈计划状态更新失败。 |
| Normal | 授权 Label 设置失败,自愈流程中止。 |