Pod stuck in Terminating
The pod was deleted but has not gone. A finalizer, a process ignoring SIGTERM, or a node nobody can reach is holding it.
Troubleshooting guide · Node NotReady
A node is NotReady when its kubelet has stopped reporting to the control plane, or reports that it cannot run pods — the runtime is down, the network plugin is not ready, or the node is out of resources. Its pods go on showing Running for a while, which is why the rest of the cluster looks healthier than it is.
Updated
When a node stops reporting, the control plane marks it NotReady or Unknown and taints it, so nothing new is scheduled there. Pods already on it keep their last reported status — usually Running — and are evicted only when their toleration for that taint runs out, five minutes by default. Controllers then replace them elsewhere; a StatefulSet pod waits until the node is confirmed gone.
Which nodes are not Ready, and for how long:
kubectl get nodes
The Conditions table: the Ready condition's reason and message, and the pressure conditions beside it:
kubectl describe node <node>
A Ready condition of Unknown with the message Kubelet stopped posting node status means the control plane has heard nothing — the kubelet is down or unreachable. False with a message means the kubelet is talking and says why it cannot run pods.
Keep new pods off the node while you work on it:
kubectl cordon <node>
Move what is left once the node is back, respecting disruption budgets:
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data
Remove a node that is gone for good, so the pods waiting on it can be replaced:
kubectl delete node <node>
In PodSteer
Read next
The pod was deleted but has not gone. A finalizer, a process ignoring SIGTERM, or a node nobody can reach is holding it.
A node ran short of memory, disk or process IDs and the kubelet reclaimed it by evicting pods — first those using more than they requested.
No node can take the pod. The scheduler's FailedScheduling event names every constraint that ruled a node out.