节点组件自愈功能说明
功能概述
节点组件自愈是CCE集群保障高可用性的核心能力之一。当节点关键组件因偶发故障或异常退出而不可用时,自愈机制可在无需人工干预的情况下自动检测并恢复服务,最大限度降低节点级故障对业务的影响,保障系统的高可用性。
自愈机制原理
自愈能力由守护进程与Systemd服务管理器协同实现,整体流程如下:

- 定时健康探测
守护进程常驻后台,按预设周期向目标组件发起健康检查,探测方式包括:
- 进程存活检测
- 端口响应探测
- 异常判定
当组件在连续多次探测中均未响应或返回错误状态时,守护进程判定组件异常。单次探测失败不会触发自愈,避免因网络抖动等瞬时干扰导致误重启。
- 触发自愈
判定异常后,守护进程通过调用Systemd执行服务重启,使组件自动恢复。
自愈组件与阈值
| 组件 | 探测周期 | 连续失败阈值 | 判定耗时 | 自愈行为 |
|---|---|---|---|---|
| yangtse/canal | 10s | 5次 | 50s | 重启yangtse/canal |
| containerd/docker(容器运行时) | 10s | 5次 | 50s | 重启containerd/docker |
| kubelet | 10s | 5次 | 50s | 重启kubelet |
| kube-proxy | 10s | 5次 | 50s | 重启kube-proxy |
| pod-identity-agent | 10s | 5次 | 50s | 重启pod-identity-agent |
10秒探测周期×5次连续失败=50秒判定窗口。
该窗口在快速发现故障与避免误判之间取得了平衡,既能保证亚分钟级的故障响应,又可有效过滤瞬时抖动。
CCE节点故障检测插件辅助检测
安装CCE节点故障检测插件后,集群将在自愈之外叠加一层组件状态检测,提供更全面的故障可观测性。CCE节点故障检测插件的探测周期与连续失败阈值支持按组件独立调整,以适配不同场景的灵敏度和容错需求。缩短周期或降低阈值可加快故障发现,但可能增加误报概率;反之则提升容错性,但故障响应延迟增大。
| 组件 | 探测周期 | 连续失败阈值 | 判定耗时 | 默认故障应对策略 |
|---|---|---|---|---|
| yangtse/canal | 30s | 1次 | 30s | 上报异常事件 |
| containerd/docker(容器运行时) | 30s | 1次 | 30s | 上报异常事件 |
| kubelet | 30s | 1次 | 30s | 上报异常事件 |
| kube-proxy | 30s | 1次 | 30s | 上报异常事件 |
| pod-identity-agent | 30s | 1次 | 30s | 上报异常事件 |
高级容灾策略
CCE节点故障检测插件支持通过配置在检测到组件故障后自动执行以下容灾动作,防止异常节点继续承接流量:
| 策略 | 说明 | 效果 |
|---|---|---|
| 标记不可调度 | 为节点添加node.kubernetes.io/unschedulable污点 | 阻止新Pod调度至该节点 |
| 驱逐Pod | 触发节点上的Pod驱逐流程 | 将存量Pod迁移至健康节点,加速业务恢复 |
上述策略可通过CCE节点故障检测插件配置按组件粒度灵活开启,适用于对可用性要求较高的生产场景。当守护进程自愈成功恢复组件后,CCE节点故障检测插件在检测组件状态恢复正常后,会同步更新节点状态,解除不可调度标记。
守护进程与CCE节点故障检测插件的协作关系
| 维度 | 守护进程自愈 | CCE节点故障检测插件检测 |
|---|---|---|
| 定位 | 主动修复—检测异常后自动重启组件 | 自动检测+容灾—上报事件,并可配置不可调度/驱逐 |
| 灵敏度 | 50s判定窗口(5×10s),容错性高 | 30s即上报(1×30s),支持按组件独立调整,灵敏度更高 |
| 价值 | 保障服务自恢复 | 丰富故障事件流,支持告警排障,同时隔离故障节点保护业务 |
注意事项
- 自愈仅针对组件异常(如组件崩溃、无响应)生效,无法修复配置错误、证书过期、磁盘满等系统性问题。
- 组件重启期间,对应节点会短暂出现NotReady状态,属于正常现象。
- 若同一组件频繁触发自愈,说明可能存在底层问题,需结合日志进一步排查。