KubernetesCritical
Fix: Kubernetes Node NotReady
kubectl get nodes shows one or more nodes in NotReady state
!Symptoms
- kubectl get nodes shows one or more nodes in NotReady state
- Pods on the affected node are being evicted or unreachable
- Cluster capacity drops, new pods cannot be scheduled
- Node conditions show MemoryPressure, DiskPressure, or PIDPressure
?Root Causes
- Kubelet process has crashed or is not running
- Node ran out of disk space, memory, or PIDs
- Network partition: node cannot communicate with the API server
- Container runtime (containerd, Docker) has crashed
- Kernel panic or hardware failure on the node
- Certificate expired on the node
#Diagnosis Steps
- 1Check node conditions: `kubectl describe node <node-name>` and review Conditions section
- 2SSH to the node and check kubelet: `systemctl status kubelet`
- 3Check kubelet logs: `journalctl -u kubelet --since '10 minutes ago'`
- 4Check container runtime: `systemctl status containerd` or `systemctl status docker`
- 5Check disk: `df -h`, memory: `free -m`, PIDs: `ps aux | wc -l`
>Fix
- 1Restart kubelet: `systemctl restart kubelet`
- 2If disk pressure: free space on the node (clean images, logs)
- 3If memory pressure: identify and kill memory-intensive processes
- 4Restart the container runtime: `systemctl restart containerd`
- 5If the node is unrecoverable: drain and replace it: `kubectl drain <node> --ignore-daemonsets --delete-emptydir-data`
*Prevention
- Monitor node health with node-problem-detector and alerts
- Set up kubelet eviction thresholds appropriately
- Use node auto-repair (GKE, EKS managed node groups)
- Monitor and alert on node conditions (DiskPressure, MemoryPressure)
- Keep nodes updated and rotate/replace them regularly
Related Error Messages
NodeNotReadynode condition Ready is now: FalseKubelet stopped posting node statuscontainer runtime is downPLEG is not healthy