更新时间:2026-08-26 GMT+08:00

节点自愈功能

节点自愈是CCE提供的节点故障自动恢复能力。当节点发生指定类型的故障且持续时间超过阈值时,系统将自动触发自愈任务,通过重启节点等方式尝试修复故障,减少人工干预,提升集群可用性。

前提条件

高级自愈依赖以下条件:

  • 已创建Kubernetes集群,且集群版本满足以下要求:
    • v1.30集群:v1.30.14-r100及以上版本
    • v1.31集群:v1.31.14-r60及以上版本
    • v1.32集群:v1.32.13-r30及以上版本
    • v1.33集群:v1.33.12-r10及以上版本
    • v1.34集群:v1.34.8-r10及以上版本
    • v1.35集群:v1.35.5-r10及以上版本
    • v1.36集群:v1.36.2-r0及以上版本
    • 其他更高版本的集群
  • 安装NPD 插件(节点故障检测插件)。

注意事项

  • 重启节点会导致该节点上所有Pod被驱逐或中断,请确保业务已具备高可用部署能力。
  • 若自愈任务执行后故障仍未恢复,系统不会无限重试,需人工排查根因。
  • 如果某个节点自愈失败,在故障修复前,该节点池不会再触发重启节点的自愈操作。
  • 同一节点池内,同一时刻仅允许一个节点执行重启自愈任务。
  • 节点完成重启自愈后,2小时内不再对该节点触发重启自愈。
  • 裸金属节点和超节点不支持节点自愈功能。

核心原理

自愈能力由守护进程与Systemd服务管理器协同实现,整体流程如下:

  1. 定时健康探测:守护进程常驻后台,按预设周期向目标组件发起健康检查,探测方式包括进程存活检测和端口响应探测。
  2. 异常判定:当组件在连续多次探测中均未响应或返回错误状态时,守护进程判定组件异常。单次探测失败不会触发自愈,避免因网络抖动等瞬时干扰导致误重启。
  3. 触发自愈:判定异常后,守护进程通过调用Systemd执行服务重启,使组件自动恢复。

若开启了“系统与K8s组件异常时允许重启节点”,在组件重启未能恢复故障时,系统将进入节点级自愈流程。

自愈流程

自愈任务触发后,系统按以下步骤依次执行:

  1. 标记节点为修复中:将节点状态标记为“修复中”,调度器停止向该节点调度新的Pod。
  2. 驱逐节点Pod:为节点添加驱逐污点(Taint),触发节点上已有Pod的优雅驱逐。已配置容忍该污点的Pod不受影响。超时时间取故障节点上所有待驱逐Pod的TerminationGracePeriodSeconds最大值与10分钟中的较大值,且最长不超过30分钟。超过超时时间后,如果驱逐失败,仍会执行后续操作。
  3. 重启节点:对节点执行重启操作,尝试恢复故障组件。
  4. 确认故障是否恢复:重启完成后,系统检测故障是否已恢复。
    • 恢复成功:移除驱逐污点,节点状态恢复正常,重新接受Pod调度。
    • 恢复失败:节点保持异常状态,自愈任务标记为失败,需人工介入排查。

故障类型

表1 基础自愈支持的故障类型

故障类型

说明

阈值

自愈行为

容器网络组件异常CNIProblem

节点网络组件异常,将影响新建Pod。

50s

重启网络组件

Kubelet服务异常KubeletProblem

kubelet进程不可用或运行异常,无法正常上报节点状态。

50s

重启kubelet

容器运行时组件异常CRIProblem

容器运行时进程异常,导致容器无法正常创建或管理。

50s

重启containerd/docker

KubeProxy异常KubeProxyProblem

检测到KubeProxy运行异常。

50s

重启kube-proxy

PodIdentityAgent异常PodIdentityAgentProblem

PodIdentityAgent状态异常,可能影响CCE插件以及依赖Pod Identity的服务运行。

50s

重启pod-identity-agent

表2 高级自愈支持的故障类型

故障类型

说明

阈值

自愈行为

容器网络组件异常CNIProblem

节点网络组件异常,将影响新建Pod。

50s

重启网络组件

Kubelet服务异常KubeletProblem

kubelet进程不可用或运行异常,无法正常上报节点状态。

180s

1. 重启kubelet(50s触发)

2. 若已开启“系统与K8s组件异常时允许重启节点”,则重启ECS实例。

容器运行时组件异常CRIProblem

容器运行时进程异常,导致容器无法正常创建或管理。

180s

1. 重启containerd/docker(50s触发)

2. 若已开启“系统与K8s组件异常时允许重启节点”,则重启ECS实例。

KubeProxy异常KubeProxyProblem

检测到KubeProxy运行异常。

50s

重启kube-proxy

PodIdentityAgent异常PodIdentityAgentProblem

PodIdentityAgent状态异常,可能影响CCE插件以及依赖Pod Identity的服务运行。

50s

重启pod-identity-agent

文件系统只读ReadonlyFilesystemProblem(依赖NPD插件版本大于等于1.19.75)

节点文件系统进入只读状态,无法执行写入操作,影响kubelet及容器运行时正常工作。

180s

若已开启“系统与K8s组件异常时允许重启节点”,则重启ECS实例。

systemd异常SystemdOfflineProblem

(依赖NPD插件版本大于等于1.19.75)

systemd状态异常,无法启动、销毁容器。

180s

若已开启“系统与K8s组件异常时允许重启节点”,则重启ECS实例。

kubeletNotReady(PLEG)

PLEG健康检查失败。

180s

若已开启“系统与K8s组件异常时允许重启节点”,则重启ECS实例。

相关文档

  • 如需了解CCE节点故障检测插件的约束、安装及组件信息,请参见CCE节点故障检测

常见问题