To use this feature, you (or a cluster administrator) will need to enable the NodeLifecycleConditions feature gate for all relevant components in your cluster.
See Enable Or Disable Feature Gates for more information.
Node 生命周期状况报告某个 Node 是否正在经历生命周期事件, 例如排空、维护或 Node 体面关闭。它们提供一种共享信号, 供集群管理员、控制器和第三方工具用于生命周期管理。
你可以使用下列众所周知的生命周期状况:
| 状况 | 描述 |
|---|---|
DrainInProgress | 正在按照管理员选定的排空标准排空 Node。 |
Drained | Node 已达到管理员选定的排空标准。 |
MaintenancePlanned | 预计 Node 将来会发生变更。如果该变更影响工作负载,请在开始维护前排空该 Node。 |
MaintenanceInProgress | Node 正在执行维护。维护可包括硬件或软件的上线、修复、退役或调试。 |
GracefulNodeShutdownInProgress | 判定 Node 上的 Node 体面关闭正在进行中。 |
每个生命周期状况的 status 具有以下含义:
True:当前观察到该状况所描述的生命周期状态。False:当前未观察到该状况所描述的生命周期状态。Unknown:写入者无法确定该生命周期状态是否处于活动状态。生命周期状况是围绕 Node 生命周期状态提供有用上下文的观察结果。
例如,使用 MaintenancePlanned 表示某个 Node 将来可能进入维护状态,
或使用 Drained 表示管理员选定的排空标准已经满足。
reason 字段标识该状况为何处于当前状态。写入者应为 reason
使用稳定的 CamelCase 取值。message 字段可提供额外的人类可读细节。
以下示例报告某个 Node 已计划进行维护:
status:
conditions:
- type: MaintenancePlanned
status: "True"
reason: MaintenanceWindow
message: "Hardware maintenance is scheduled for this Node"
lastTransitionTime: "2026-07-20T14:00:00Z"
管理员或管理员授权的控制器负责设置和清除 Node 上的生命周期状况。
由写入者决定生命周期状态何时处于活动状态。当该状态不再处于活动状态时,
写入者将该状况设置为 False 或将其移除。
Kubernetes 不定义排他性的写入者属主关系、锁定机制或参与者之间的交接。 写入者应在此 API 之外协调属主关系。
核心工作负载控制器不会根据生命周期状况改变其行为。 设置某个生命周期状况不会影响 Node 的核心行为。
仍应继续使用现有的生命周期管理机制:
kubectl cordon
或设置 .spec.unschedulable,以阻止将 Pod 正常调度到某个 Node 上。kubectl drain
安全地驱逐 Pod。使用 kubectl describe node 查看某个 Node 的所有状况:
kubectl describe node <node-name>
要打印每个状况的类型和状态,可使用:
kubectl get node <node-name> \
-o jsonpath='{range .status.conditions[*]}{.type}={.status}{"\n"}{end}'