kubectl, interpret node conditions, inspect the node locally (if reachable), examine kubelet logs and certificates, and follow a concise checklist to restore node health.

1. Check cluster node status
Start by checking which nodes are Ready, NotReady, or have other conditions:2. Understand node conditions
Node conditions indicate node health. Below is a quick reference for common condition types and recommended actions.
If the kubelet stops reporting, conditions can switch to
Unknown and the Reason may show NodeStatusUnknown. Check LastHeartbeatTime to see when the node stopped reporting.
If node conditions are
Unknown, first verify the node itself (network, power, or hypervisor state). Use the LastHeartbeatTime to determine when it stopped reporting, then try to reach the node via SSH or your cloud provider console.3. Troubleshoot on the node (when reachable)
If you can SSH into the node (or access it via cloud console), follow these steps in order:-
Verify basic reachability and host health
- Ping the node, check cloud provider instance status, or SSH into it.
- If the node is powered off or unreachable at hypervisor level, bring it online.
-
Inspect system resource usage
- Check CPU, memory and load with
toporhtop. - Inspect disk usage with
df -hand inode usage withdf -i.
- Check CPU, memory and load with
top output:
- Check kubelet service and inspect logs
- Verify kubelet is running:
- Inspect recent kubelet logs for authentication, certificate, network, or filesystem errors:
- Validate kubelet certificates and credentials
- If kubelet cannot authenticate to the API server, certificate issues (expired, wrong subject/SAN, wrong CA) are common culprits.
- Check the node certificate:
Subject / SANs do not match the node identity, kubelet registration and authentication will fail and the control plane will mark the node accordingly.
4. Quick troubleshooting checklist
- Run
kubectl get nodesto spot non-Ready nodes. - Use
kubectl describe node <node>to examine Conditions andLastHeartbeatTime. - If Conditions are
Unknown, verify node reachability via SSH or cloud console. - On the node: check
top,df -h,free -mfor resource exhaustion. - Verify kubelet status:
systemctl status kubeletandjournalctl -u kubelet. - Confirm kubelet certificates are valid:
openssl x509 -in /var/lib/kubelet/<node>.crt -text -noout. - If kubelet config or certs are broken, re-provision kubelet credentials or rotate certificates as needed.