DB / K8s / NodeNotReady
CRITICAL
K8s Node Not Ready
A Kubernetes node's status is 'NotReady', indicating it cannot schedule or run pods. The kubelet on the node is failing to report a healthy status to the control plane.
Common Causes
- Kubelet service is stopped or crashed on the node.
- Insufficient memory or disk pressure on the node.
- Network connectivity issues between the node and the API server.
- Docker/Container Runtime is not running or is unhealthy.
- Node has exhausted CPU, memory, or PID resources.
How to Fix
1 Check Node and Kubelet Status
First, get the detailed status of the node and check if the kubelet service is active.
BASH
$ kubectl describe node <node-name>
# On the affected node, check the kubelet service:
systemctl status kubelet 2 Restart Kubelet Service
Often, restarting the kubelet service can resolve transient issues.
BASH
$ # On the affected node:
sudo systemctl restart kubelet
# Check status again:
sudo systemctl status kubelet 3 Check Node Resources and Disk Pressure
Inspect if the node is under MemoryPressure or DiskPressure, which can cause a NotReady status.
BASH
$ kubectl describe node <node-name> | grep -A 5 -i pressure
# Check disk space on the node:
df -h
# Check memory usage:
free -h 4 Inspect Kubelet Logs
Examine the kubelet logs for specific error messages indicating the root cause.
BASH
$ # On the affected node:
sudo journalctl -u kubelet --no-pager | tail -100 5 Drain and Cordon the Node (If Needed)
If the node is problematic, safely evict pods and mark it unschedulable for maintenance.
BASH
$ kubectl cordon <node-name>
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data