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