World map

 

BM: Baca dalam Bahasa Melayu

World K9: Cluster Admin

Node NotReady: the ladder

You will learn: a step-by-step ladder to find out why a node is NotReady, and fix it.

Checked with Kubernetes 1.37 on 1 Nov 2026

The problem

You are here: cluster kind-dev namespace default
kubectl get nodes: dev-worker is NotReady. The other two stalls are Ready. Terminal output: $ kubectl get nodes NAME STATUS ROLES AGE VERSION dev-control-plane Ready control-plane 6m34s v1.37.0 dev-worker NotReady <none> 6m34s v1.37.0 dev-worker2 Ready <none> 6m34s v1.37.0

3 a.m. again: dev-worker is NotReady. Don’t guess. Climb one ladder, one rung at a time, from the top.

Try it

Rung 2 is kubectl describe node dev-worker. Read its node conditions: A stall's health notes: Ready, MemoryPressure and more. Unknown means its kubelet stopped reporting.. Tap the Ready line.

Tap the line for the Ready condition.

0 of 1 found

Predict

“Kubelet stopped posting node status.” Where is the next rung?

Pick one answer.

Try it

Climb down. Type ssh dev-worker, then systemctl status kubelet. Then read the diary: journalctl -u kubelet -n 10 --no-pager.

You are here: cluster kind-dev namespace default
Stalls: 3. Trays: 3 (1 ready). Waiting for a stall: 0.
dev-control-planeOpenManager

No trays here.

dev-workerNo news
  • shop·7q7qhRunning
  • shop·9dc85Running
dev-worker2Open
  • shop·8sp6t
Time: +0s (sped up)

Check

These are the diary’s last lines. Tap the two lines where systemd stops the kubelet.

Tap the 2 lines from systemd about stopping.

0 of 2 found

Try it

Now fix it: systemctl start kubelet. Then exit, and watch the stall with kubectl get nodes -w.

You are here: cluster kind-dev namespace default
Stalls: 3. Trays: 3 (1 ready). Waiting for a stall: 0.
dev-control-planeOpenManager

No trays here.

dev-workerNo news
  • shop·7q7qhRunning
  • shop·9dc85Running
dev-worker2Open
  • shop·8sp6t
Time: +0s (sped up)

Check

Put the whole ladder in order, top rung first.

Top rung at the top. Put these in order. Use the arrows, or drag.

  • Go inside: ssh dev-worker
  • Fix: systemctl start kubelet
  • What did it write? journalctl -u kubelet
  • Is the supervisor on duty? systemctl status kubelet
  • Watch it turn Ready: kubectl get nodes -w
  • Why? kubectl describe node dev-worker
  • Which stall? kubectl get nodes

Check

Good move on a NotReady node? Swipe right for good.

Swipe right for good, left for needs work. Or use the buttons.

1 / 4

Read systemctl status before you change anything

Read systemctl status before you change anything

You did it!

You can now climb the NotReady ladder and bring a node back.

Go deeper (optional)

Other NotReady nights use the same ladder. Maybe the stove (containerd) is down. Maybe there is no Pod network yet, or the disk is full. kubectl describe shows where to look. The diary shows why. Practise breaking a stall on a throwaway cluster only.

Real mission

  1. kubectl config current-context
  2. docker exec dev-worker systemctl stop kubelet
  3. kubectl get nodes
  4. kubectl describe node dev-worker
  5. docker exec dev-worker systemctl start kubelet
  6. kubectl get nodes -w

0 of 6 steps done · Your ticks are saved.