ACK 节点池支持自定义故障自愈流程,在 ECS、灵骏(含超节点)上自动发现 GPU 故障与节点底层异常,按您定义的步骤修复,修复进度通过 Kubernetes Event 透出。
适用范围
-
节点池类型:ECS 节点池、灵骏节点池(含超节点)。
-
故障类型:节点故障、GPU 故障、系统与组件故障。
-
组件依赖:GPU 故障、系统与组件故障的检测依赖
ack-node-problem-detector(NPD)组件版本 1.2.36 及以上。节点自愈流程由node-lifecycle-controller组件驱动,建议升级至最新版本以获取新增的故障检测项与修复能力,升级方式请参见升级自愈组件。 -
地域限制:暂不支持专属云地域。
自愈机制说明
节点自愈持续监测节点上报的故障信号(云监控底层事件、底层系统事件、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=skip标签的 Pod 不会被驱逐;超时后自动进入后续流程。自动修复
执行故障类型对应的修复动作(详见上文故障说明)。
解除节点隔离
需先开启节点隔离。将节点恢复为可调度(
spec.unschedulable=false)。若节点在进入修复流程前已不可调度,则本步骤不会将其恢复为可调度。
-
自愈限流与熔断保护
在托管配置页面选择自定义托管并开启节点自愈后,自愈限流和熔断策略按默认策略生效。如需更改,请单击修改自愈限流和熔断策略。
默认策略
默认情况下,当同时出现多个节点异常时,ACK 将逐个修复节点池内所有异常节点,即每次仅修复一个节点,且不触发熔断。
修改默认策略
如默认策略不满足需求,单击修改自愈限流和熔断策略,配置以下参数:
|
配置项 |
说明 |
|
最大并行修复节点数 |
节点池中存在大量异常节点时,最多允许同时修复的节点数。 |
|
自愈熔断条件 |
当发生故障的节点数大于该阈值时,自愈进入熔断状态,并停止新增自愈修复动作。 |
-
请确保自愈熔断阈值大于等于最大并行修复节点数,避免 ACK 在故障节点数达到最大并行修复节点数前触发自愈熔断,停止自愈修复操作。
-
当节点池中发生受超节点影响的维修或重启类型故障时,ACK 需对该超节点下所有子节点同时进行修复。如果配置的最大并行修复节点数小于单个超节点中子节点数量,该类故障将无法修复,建议合理设置最大并行修复节点数。
开启自动故障诊断(ECS 深层诊断)
开启自动故障诊断后,ACK 通过节点侧监控探针 ack-node-problem-detector(NPD)发现潜在异常,并主动发起 GPU 硬件设备的深层诊断。确认存在异常时,ACK 会通过 Kubernetes Event、Node Condition 和 ECS 系统事件报警,您可结合节点自愈规则进行自动响应。
仅针对 ECS 节点池。
开启方式
新节点池
创建节点池时,在托管配置区域选择自定义托管,并勾选自动故障诊断。
存量节点池
已开启托管的节点池:单击目标节点池对应操作列下的,在托管配置窗口中勾选自动故障诊断。
未开启托管的节点池:单击目标节点池对应操作列下的,在开启托管窗口中选择自定义托管,并勾选自动故障诊断。
以下 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监控告警规则集、集群节点池运维事件报警规则集和集群节点自愈报警规则集。建议配置单独的报警群或联系人,以便在异常发生时及时接收告警通知。关于规则集启用操作,请参见容器服务报警管理。
报警项说明
上述规则集包含以下与节点自愈相关的报警项:
|
报警项 |
说明 |
|
底层事件转换报警 |
节点底层事件(灵骏 CMS 事件、ECS 系统事件)转换为 Node Condition 和 Kubernetes Event 时触发,便于及时感知节点硬件与系统异常。完整映射关系,请参见底层事件与 Node Condition 转换。 |
|
GPU 监控报警 |
NPD 检测到 GPU 设备异常时触发。具体故障项与修复行为,请参见GPU 故障。 |
|
自愈整体进度报警 |
上报节点自愈流程的整体进度,包括隔离、排水、修复、解除隔离各阶段的执行结果。各阶段对应的事件,请参见节点自愈流程相关 Kubernetes 事件说明。 |
|
集群节点池自愈汇总 |
每天当地时间 10:00 和 18:00 汇总集群内各节点池的自愈情况,重点提示等待审批的节点和处于不可调度状态的节点,并提供可直接执行的查询命令,便于您及时处理。 |
升级自愈组件
节点自愈流程由集群组件 node-lifecycle-controller 驱动。新增的故障类型、修复动作和报警项依赖较新的组件版本,建议将该组件升级至最新版本。
-
登录容器服务管理控制台,在左侧导航栏选择集群列表,然后单击目标集群名称。
-
在集群管理页左侧导航栏,选择组件管理。
-
搜索并找到
node-lifecycle-controller组件。若组件存在可用的新版本,单击升级,并在提示对话框中确认。
组件的更多操作,请参见组件。
故障说明
下表按故障类型说明触发自愈的 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 故障的修复行为均为重启节点。当 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)异常。 |
登录节点执行修复命令 说明
若在自动修复 阶段开启了允许重启节点,当自动修复动作执行后异常仍未恢复时,ACK 将尝试重启节点以修复。 |
10s |
节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
|
节点容器运行时不可用 |
|
容器运行时(containerd 或 Docker Engine)已停止,节点不可用。 |
登录节点执行修复命令 说明
若在自动修复 阶段开启了允许重启节点,当自动修复动作执行后异常仍未恢复时,ACK 将尝试重启节点以修复。 |
90s |
节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
|
节点 Systemd 服务异常 |
|
Systemd 状态异常,无法启动、销毁容器。 |
重启节点 |
90s |
节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
|
节点处于未就绪(NotReady)状态 |
|
kubelet 停止或心跳异常,导致节点处于未就绪(NotReady)状态。 |
登录节点执行修复命令 说明
若在自动修复 阶段开启了允许重启节点,当自动修复动作执行后异常仍未恢复时,ACK 将尝试重启节点以修复。 |
180s |
连续三次探测,节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 True。 |
|
节点文件系统进入只读状态 |
|
节点文件系统变为只读。 |
重启节点 |
90s |
节点状态为 Ready 且触发故障的 Node Condition 的 Status 为 False。 |
底层事件与 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 和 Node Condition,同时通过 Kubernetes Event 上报自愈计划的进度。可通过 kubectl describe node <节点名称> 或 kubectl get events 查看。
判断自愈是否成功
当节点恢复 Ready、且触发本次故障的 Node Condition 已消除(或满足对应故障类型的自愈成功判断条件),并出现 RepairPlanCompleted 事件、消息显示自愈成功时,表示本次自愈完成。若出现 NodeNotRecovery 或 RepairPlanFailed 事件,表示节点未恢复,需按注意事项登录集群手动修复。
常见自愈流程事件
|
事件(Reason) |
说明 |
|
|
检测到灵骏节点故障事件,或故障事件状态有更新。 |
|
|
检测到灵骏超节点故障事件,或故障事件状态有更新。 |
|
|
检测到ECS节点故障事件,或故障事件状态有更新。 |
|
|
自愈计划已创建。 |
|
|
当前流程需要人工授权,事件消息中包含需授权的操作及授权方式。 |
|
|
授权标签已添加到节点标签中。 |
|
|
自愈计划状态更新,记录当前执行的流程及执行结果。 |
|
|
已授权灵骏管控执行修复操作。 |
|
|
修复完成后每 30 分钟检测一次节点状态;若节点未恢复,则触发此事件。 |
|
|
自愈计划结束,事件消息中显示自愈成功或失败。 |
|
|
超节点事件自愈,等待该超节点的所有子节点进入维修阶段。 |
|
|
节点池发生故障的节点数大于熔断阈值,自愈进入熔断状态,并停止新增自愈修复动作。 |
|
|
节点池故障节点并发修复数已达上限。 |
|
|
节点故障恢复,自检通过。 |
特殊场景事件
|
事件(Reason) |
说明 |
|
|
上一次自愈计划执行成功,但当前故障类型与上次不同,系统等待 10 分钟静默期后再创建新的自愈计划。 |
|
|
当前故障已被最近一次自愈成功处理,但节点实际未恢复,需人工介入排查。 |
|
|
当前故障对应的自愈计划执行失败,节点未恢复,需人工介入排查。 |
|
|
自愈计划状态更新失败。 |
|
|
授权标签设置失败,自愈流程中止。 |
|
|
当前实例状态无法满足修复动作, 暂时跳过自愈。 |