- 文档首页
容器服务
容器服务 VKE
用户指南
诊断与巡检
检查自愈
自定义节点检查项
自定义节点检查项
使用节点自愈功能时,如果系统预置的异常状态或检查规则无法满足您的需求,您可以基于节点 NodeCondition 信息自定义检查项。本文为您介绍自定义检查项基本概念、数据结构和参数的含义。
在 Kubernetes 集群中,NodeCondition(节点状态条件)主要用来描述节点当前运行状态,它通过一组 “键值对 + 状态 + 时间戳” 的形式,精准反映节点的可用、就绪或资源压力等属性。Kubernetes 控制器(如 kubelet、调度器等)会持续更新这些条件,调度器也会基于 NodeCondition 决定是否将 Pod 调度到该节点。
说明
更多 NodeCondition 详情,请参见 官方文档。 NodeCondition 的结构由以下字段组成:
您可以执行kubectl describe node {node-name}命令,查看节点的 NodeCondition 信息。其中,{node-name}表示节点名称。
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
Ready True 2025-12-05T10:00:00Z 2025-12-01T08:00:00Z KubeletReady kubelet is posting ready status
MemoryPressure False 2025-12-05T10:00:00Z 2025-12-01T08:00:00Z KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False 2025-12-05T10:00:00Z 2025-12-01T08:00:00Z KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False 2025-12-05T10:00:00Z 2025-12-01T08:00:00Z KubeletHasSufficientPID kubelet has sufficient PID available
NetworkUnavailable False 2025-12-05T10:00:00Z 2025-12-01T08:00:00Z RouteCreated RouteController created all required routes
Kubernetes 定义了一组标准的 NodeCondition 类型,覆盖节点的核心状态。
这是节点最重要的 NodeCondition 类型,直接决定节点是否可调度 Pod:
- 当Status为True时:表示节点健康,kubelet 正常运行,网络/存储可用,调度器可将 Pod 调度到该节点。
- 当Status为False时:表示节点不可用(如 kubelet 宕机、网络故障),已调度的 Pod 会被驱逐,新 Pod 不会调度到该节点。
- 当Status为Unknown时:表示 kube-apiserver 超过node-monitor-grace-period(默认 40 秒)未收到 kubelet 心跳,视为 “失联”,调度器也会避免调度 Pod 到该节点。
这类条件触发时,节点会进入资源压力状态,调度器会限制/禁止新 Pod 调度,kubelet 可能会触发 Pod 驱逐。
NetworkUnavailable(网络失效状态)
- 当Status为True时:表示节点网络未就绪(如 CNI 插件未配置、网络路由创建失败)。
- 当Status为False时:表示节点网络正常,Pod 可正常通信。
- 在集群列表页面,单击目标集群,进入集群管理页面。
- 在集群管理页面的左侧导航栏中选择 检查自愈,单击 自定义检查项,使用 YAML 代码配置检查项。
-
节点检查自愈功能允许使用 YAML 代码,基于 NodeCondition 配置自定义检查项。代码示例如下:
IncidentTypeDefinitions:
- Code: "GpuHealthAbnormal"
EventProvider: "NodeCondition"
Reason: "GpuHealthAbnormal"
Message: "GPU temperature exceeds threshold (85°C), fan speed abnormal"
EventProvider: "NodeCondition"
Reason: "^KubeletNotReady$"
Message: "^kubelet is not running$"
自定义故障代码中,可以使用的变量参数和说明,如下表所示。
最近更新时间:2025.12.10 11:33:39