You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
检查自愈
自定义节点检查项
复制全文
下载 pdf
自定义节点检查项
使用节点自愈功能时,如果系统预置的异常状态或检查规则无法满足您的需求,您可以基于节点 NodeCondition 信息自定义检查项。本文为您介绍自定义检查项基本概念、数据结构和参数的含义。​
背景信息​
什么是 NodeCondition?​
在 Kubernetes 集群中,NodeCondition(节点状态条件)主要用来描述节点当前运行状态,它通过一组 “键值对 + 状态 + 时间戳” 的形式,精准反映节点的可用、就绪或资源压力等属性。Kubernetes 控制器(如 kubelet、调度器等)会持续更新这些条件,调度器也会基于 NodeCondition 决定是否将 Pod 调度到该节点。​
说明​
更多 NodeCondition 详情,请参见 官方文档。​
NodeCondition 结构​
NodeCondition 的结构由以下字段组成:​
​
字段名​
含义​
Type​
NodeCondition 类型(如 Ready、MemoryPressure),标识要检查的节点状态。​
Status​
NodeCondition 状态,包括:​
  • True:正常​
  • False:异常​
  • Unknown:未知​
Reason​
状态转换的简短原因(如 KubeletNotReady、MemoryPressure)。​
Message​
状态转换的描述信息(如 kubelet is down: postStart hook failed)。​
LastHeartbeatTime​
该 NodeCondition 状态最后一次更新的时间戳。​
LastTransitionTime​
该 NodeCondition 状态最后一次变化的时间戳。​
​
您可以执行kubectl describe node {node-name}命令,查看节点的 NodeCondition 信息。其中,{node-name}表示节点名称。​
​
Conditions:​
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​
​
常见 NodeCondition 类型​
Kubernetes 定义了一组标准的 NodeCondition 类型,覆盖节点的核心状态。​
Ready(就绪状态)​
这是节点最重要的 NodeCondition 类型,直接决定节点是否可调度 Pod:​
  • 当Status为True时:表示节点健康,kubelet 正常运行,网络/存储可用,调度器可将 Pod 调度到该节点。​
  • 当Status为False时:表示节点不可用(如 kubelet 宕机、网络故障),已调度的 Pod 会被驱逐,新 Pod 不会调度到该节点。​
  • 当Status为Unknown时:表示 kube-apiserver 超过node-monitor-grace-period(默认 40 秒)未收到 kubelet 心跳,视为 “失联”,调度器也会避免调度 Pod 到该节点。​
Pressure(资源压力状态)​
这类条件触发时,节点会进入资源压力状态,调度器会限制/禁止新 Pod 调度,kubelet 可能会触发 Pod 驱逐。​
​
条件类型​
触发场景​
MemoryPressure​
节点内存不足。例如:可用内存低于 kubelet 配置的阈值,如memory.available < 100Mi)。​
DiskPressure​
节点磁盘空间不足。例如:根分区/容器运行时分区可用空间低于阈值。​
PIDPressure​
节点进程数(PID)耗尽(可用 PID 数低于阈值)。​
​
NetworkUnavailable(网络失效状态)​
  • 当Status为True时:表示节点网络未就绪(如 CNI 插件未配置、网络路由创建失败)。​
  • 当Status为False时:表示节点网络正常,Pod 可正常通信。​
配置自定义检查项​
操作步骤​
  1. 单击左侧导航栏中的 集群。​
  1. 在集群列表页面,单击目标集群,进入集群管理页面。​
  1. 在集群管理页面的左侧导航栏中选择 检查自愈,单击 自定义检查项,使用 YAML 代码配置检查项。​
  • ​​​
  1. 单击 保存,完成配置。​
数据结构​
节点检查自愈功能允许使用 YAML 代码,基于 NodeCondition 配置自定义检查项。代码示例如下:​
​
IncidentTypeDefinitions:​
- Code: "GpuHealthAbnormal"​
Name: "GPU健康状态异常"​
Description: "GPU卡温度过高"​
ResourceType: "VkeNode"​
EventProvider: "NodeCondition"​
DetectionConfig:​
NodeCondition:​
Type: "Ready"​
Status: "False"​
Reason: "GpuHealthAbnormal"​
Message: "GPU temperature exceeds threshold (85°C), fan speed abnormal"​
- Code: "NodeNotReady"​
Name: "节点未就绪"​
Description: "集群节点未就绪"​
ResourceType: "VkeNode"​
EventProvider: "NodeCondition"​
DetectionConfig:​
NodeCondition:​
Type: "Ready"​
Status: "False"​
Reason: "^KubeletNotReady$"​
Message: "^kubelet is not running$"​
​
参数说明​
自定义故障代码中,可以使用的变量参数和说明,如下表所示。​
​
参数名称​
参数类型​
是否必填​
配置示例​
参数说明​
Code​
String​
是​
GpuHealthAbnormal​
故障码,仅支持英文大小写字母和数组。​
Name​
String​
是​
GPU健康状态异常​
故障名称。​
Description​
String​
否​
GPU卡温度过高​
故障描述。​
ResourceType​
String​
是​
VkeNode​
故障资源类型,当前仅支持VkeNode,表示 VKE 集群节点故障。​
EventProvider​
String​
是​
NodeCondition​
故障事件来源,当前仅支持NodeCondition,表示故障来源于节点事件。​
DetectionConfig.NodeCondition.Type​
String​
是​
Ready​
Condition 类型(例如 Ready、DiskPressure 等),用于标识节点的某类状态维度。​
DetectionConfig.NodeCondition.Status​
String​
是​
False​
Condition 状态值,取值:​
  • True:正常​
  • False:异常​
  • Unknown:未知​
DetectionConfig.NodeCondition.Reason​
String​
否​
^KubeletNotReady$​
状态转换的简短原因(如KubeletNotReady)。允许通过正则表达式进行匹配。匹配成功时,将该 Condition 指定为自定义故障。​
DetectionConfig.NodeCondition.Message​
String​
否​
^kubelet is not running$​
状态转换的详细描述(如kubelet is not running)。允许通过正则表达式进行匹配。匹配成功时,将该 Condition 指定为自定义故障。​
​
​
最近更新时间:2025.12.10 11:33:39
这个页面对您有帮助吗?
有用
有用
无用
无用