World map

 

BM: Baca dalam Bahasa Melayu

World K5: Lunch Rush

The debug ladder

You will learn: a calm, step-by-step way to find out why a tray is not working.

Checked with Kubernetes 1.37 on 31 Oct 2026

The problem

You are here: cluster kind-dev namespace default
Two menu pods, both Running, but READY shows 0/1 for each. Terminal output: $ kubectl get pods NAME READY STATUS RESTARTS AGE menu-69f7b954d7-fkv44 0/1 Running 0 32s menu-69f7b954d7-pswnv 0/1 Running 0 32s

Both menu trays say Running. But READY says 0/1. Customers get nothing. Where do you even start?

Watch

Don’t guess. Climb the debug ladder: Climb one rung at a time: get, describe, logs, events, exec, debug., one rung at a time. Each rung shows a bit more. Put the rungs in order, from the bottom.

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

  • exec: try it from inside the tray
  • logs: what did the app print?
  • events: what did Kubernetes post?
  • describe: what does the tray say about itself?
  • debug: bring your own toolbox
  • get: what is the status?

Try it

Rung 1 said 0/1. Now rung 2: describe the menu trays. Read the Events at the bottom.

You are here: cluster kind-dev namespace default
Stalls: 3. Trays: 2 (0 ready). Waiting for a stall: 0.
  • menu0/2 ready no ready trays
dev-control-planeOpenManager

No trays here.

dev-workerOpen
  • menu·fkv44Running
dev-worker2Open
  • menu·pswnvRunning
Time: +0s (sped up)

Check

The Events said: Readiness probe failed: HTTP probe failed with statuscode: 404. What does that mean?

Pick one answer.

Watch

You are here: cluster kind-dev namespace default
The logs show kube-probe asking GET /ready and getting 404. From inside the pod, wget localhost/ready also gets 404 Not Found. Terminal output: $ kubectl logs menu-69f7b954d7-fkv44 --tail=2 10.244.1.1 - - [31/Oct/2026:01:00:24 +0000] "GET /ready HTTP/1.1" 404 153 "-" "kube-probe/1.37" "-" 10.244.1.1 - - [31/Oct/2026:01:00:29 +0000] "GET /ready HTTP/1.1" 404 153 "-" "kube-probe/1.37" "-" $ kubectl exec menu-69f7b954d7-fkv44 -- wget -qO- localhost/ready wget: server returned error: HTTP/1.1 404 Not Found command terminated with exit code 1

Rungs 3 and 5 agree. The logs show the probe asking for /ready. From inside, /ready gives 404 too. The app only serves /.

Try it

menu-fixed.yaml probes / instead. Apply it. Wait until both trays are ready.

You are here: cluster kind-dev namespace default
Stalls: 3. Trays: 2 (0 ready). Waiting for a stall: 0.
  • menu0/2 ready no ready trays
dev-control-planeOpenManager

No trays here.

dev-workerOpen
  • menu·fkv44Running
dev-worker2Open
  • menu·pswnvRunning
Time: +0s (sped up)

Watch

Top rung: some images have no shell and no tools. kubectl debug adds a temporary toolbox container to the tray. Build the command.

Tap the pieces in the right order.

…

You did it!

You can now climb the debug ladder instead of guessing.

Go deeper (optional)

kubectl debug node/dev-worker -it --image=busybox:1.37 opens a toolbox on a stall itself. A debug container stays until the pod is deleted. Stuck on one problem? The Ship It Rescue Center has step-by-step flows.

Real rep (optional): break a probe on a kind cluster, then climb the ladder.