BM: Baca dalam Bahasa Melayu
World K2: Trays & Orders
Pod states and their errors
You will learn: what Pending, CrashLoopBackOff, ImagePullBackOff and OOMKilled mean, and where to look first.
Checked with Kubernetes 1.37 on 31 Oct 2026
The problem
kind-dev namespace defaultFour trays, four kinds of trouble. The words look scary. Each one has a plain meaning, and a first place to look.
Watch
Real error: CrashLoopBackOff: The app keeps crashing; Kubernetes waits longer before each restart. Read the logs.. Plain words: the app starts, crashes, and Kubernetes waits longer before each retry. Tap through it.
Tap each point on the timeline.
Try it
Why does oops crash? Kubernetes cannot fix your app. Ask the tray: read its logs.
kind-dev namespace defaultdev-control-planeOpenManagerNo trays here.
dev-workerOpen- oops·ht8mq↻3CrashLoopBackOff
dev-worker2OpenNo trays here.
Hint
kubectl logs deployment/oops shows what the app printed.Watch
kind-dev namespace defaultReal error: Pending: The tray has no stall yet (no room), or its images are still on the way. with Insufficient cpu. Plain words: no stall has room for this tray. It asks for 64 CPUs.
Predict
hungry may use 64Mi of memory. Its app keeps eating more. What happens?
Pick one answer.
Watch
kind-dev namespace defaultReal error: OOMKilled: The container used more memory than its limit and was killed (exit code 137)., exit code 137. Plain words: it used more memory than its limit. STATUS shows it for a moment, then CrashLoopBackOff.
Try it
Real error: ImagePullBackOff: The stall cannot fetch the image, often a typo in the name or tag.. Plain words: the stall cannot fetch that image. Here the tag 1.299 is a typo. Ship nginx:1.30-alpine instead.
kind-dev namespace defaultWant 3. See 4. Remove 1.
dev-control-planeOpenManagerNo trays here.
dev-workerOpen- shop·2g4l2
- shop·v62jm
dev-worker2Open- shop·fxdpqImagePullBackOff
- shop·57nrg
Hint
kubectl set image deployment/shop web=nginx:1.30-alpine replaces the bad tag.Check
Where do you look first? Sort each error.
Drag a card into a box. Or tap the card, then tap the box.
You did it!
You can now read the four classic pod errors and know where to look.
Go deeper (optional)
kubectl describe pod <name> tells the whole story: Last State, Reason, Exit Code and Events at the end. A crashing app’s last run is in kubectl logs <pod> --previous, if the kubelet still keeps it. World K5 teaches the full debug ladder.
Real rep (optional): on a throwaway cluster, run a pod with a wrong tag. Then read describe.
Bahasa Melayu
Empat dulang, empat jenis masalah. Perkataannya nampak menakutkan. Setiap satu ada maksud mudah, dan tempat pertama untuk disemak.
Ralat sebenar: CrashLoopBackOff. Maksudnya: aplikasi mula, crash, dan Kubernetes tunggu lebih lama sebelum cuba lagi. Tekan setiap langkah.
Kenapa oops crash? Kubernetes tak boleh baiki aplikasi anda. Tanya dulang itu: baca lognya.
kubectl logs deployment/oops tunjuk apa yang aplikasi cetak.Ralat sebenar: Pending dengan Insufficient cpu. Maksudnya: tiada gerai yang ada ruang untuk dulang ini. Ia minta 64 CPU.
hungry boleh guna 64Mi memori. Aplikasinya asyik makan lebih. Apa jadi?
Ralat sebenar: OOMKilled, kod keluar 137. Maksudnya: ia guna memori lebih daripada hadnya. STATUS tunjuk sekejap, kemudian CrashLoopBackOff.
Ralat sebenar: ImagePullBackOff. Maksudnya: gerai tak dapat ambil image itu. Di sini tag 1.299 salah taip. Hantar nginx:1.30-alpine.
kubectl set image deployment/shop web=nginx:1.30-alpine ganti tag yang salah.Di mana anda semak dulu? Susun setiap ralat.
Kini anda boleh baca empat ralat pod yang biasa dan tahu di mana nak semak.
You finished this before. Practice is always welcome!
Official docs: Kubernetes: Pod lifecycle · Kubernetes: Debug pods · kubectl logs
You've learned for 25 minutes. A short break helps your brain.
Sprint done! Great focus. Stretch for a minute?