Ready.
Prerequisites:
- Access to the control plane and worker node via SSH.
- Root or sudo on the nodes.
- Basic familiarity with systemd,
journalctl, and kubelet configuration files.
1) First symptom: node01 is NotReady
From the control plane, check node status:NotReady. The kubelet is the primary node agent to investigate.
SSH to the worker and inspect the kubelet service:
2) Second symptom: kubelet repeatedly fails (exit code 255)
Later, node01 becomesNotReady again:
clientCAFile points to /etc/kubernetes/pki/WRONG-CA-FILE.crt. The correct CA on kubeadm clusters is typically /etc/kubernetes/pki/ca.crt. Update the config and restart kubelet:
Ready again until the next failure.
3) Third symptom: kubelet cannot register with API server (connection refused)
When the node becomesNotReady again, check the kubelet logs:
6553. The kubelet’s kubeconfig (/etc/kubernetes/kubelet.conf) defines the API server server URL.
Inspect the kubeconfig:
server is set to https://controlplane:6553 which is incorrect — the kube-apiserver listens on port 6443 by default. Update the kubeconfig to the correct port and restart kubelet:
Common causes and quick fixes
Useful references:
When a worker node shows
NotReady, follow this prioritized checklist:- From the control plane, identify the affected node:
kubectl get nodes. - SSH into the worker and check the kubelet service:
systemctl status kubeletorservice kubelet status. - Inspect logs for immediate clues:
journalctl -u kubelet -xeorjournalctl -u kubelet -n 200. - Verify kubelet configuration files:
/var/lib/kubelet/config.yaml(e.g.x509.clientCAFile)/etc/kubernetes/kubelet.conf(API serverserverURL)
- Fix obvious misconfigurations (correct file paths, ports, or certificates), restart kubelet, and re-check node status:
kubectl get nodes. - If the issue persists, confirm network connectivity to the API server and validate certificate validity.