Kubernetes v1.37 [alpha](disabled by default)Node lifecycle conditions report whether a Node is undergoing a lifecycle event such as drain, maintenance, or Graceful Node Shutdown. They provide a shared signal that cluster administrators, controllers, and third-party tools can use for lifecycle management.
The following well-known lifecycle conditions are available:
| Condition | Description |
|---|---|
DrainInProgress | The Node is actively being drained according to the administrator's chosen drain criteria. |
Drained | The Node has reached the drain criteria selected by the administrator. |
MaintenancePlanned | The Node is expected to undergo a change in the future. If the change affects workloads, drain the Node before starting maintenance. |
MaintenanceInProgress | The Node is actively undergoing maintenance. Maintenance can include hardware or software rollout, remediation, decommissioning, or debugging. |
GracefulNodeShutdownInProgress | Graceful Node Shutdown is determined to be in progress on the Node. |
The status of each lifecycle condition has the following meaning:
True: the lifecycle state described by the condition is currently observed.False: the lifecycle state described by the condition is not currently
observed.Unknown: the writer cannot determine whether the lifecycle state is active.Lifecycle conditions are observations that provide useful context around a Node's
lifecycle state. For example, use MaintenancePlanned to signal that a Node may
go into maintenance in the future, or Drained to signal that the
administrator's selected drain criteria have been met.
The reason field identifies why the condition has its current status. Writers
should use stable CamelCase values for reason. The message field can provide
additional human-readable detail.
The following example reports that maintenance is planned for a Node:
status:
conditions:
- type: MaintenancePlanned
status: "True"
reason: MaintenanceWindow
message: "Hardware maintenance is scheduled for this Node"
lastTransitionTime: "2026-07-20T14:00:00Z"
An administrator or an administrator-authorized controller is responsible for setting and clearing lifecycle conditions on the Node.
The writer determines when a lifecycle state is active. When the state is no
longer active, the writer sets the condition to False or removes it.
Kubernetes does not define exclusive writer ownership, locking, or handoff between actors. Writers should coordinate ownership outside this API.
The existing lifecycle management mechanisms should still be used:
kubectl cordon or
set .spec.unschedulable to prevent normal scheduling onto a Node.kubectl drain to
safely evict Pods before taking a Node out of service.Use kubectl describe node to view all conditions for a Node:
kubectl describe node <node-name>
To print the type and status of every condition, use:
kubectl get node <node-name> \
-o jsonpath='{range .status.conditions[*]}{.type}={.status}{"\n"}{end}'