kubectl get pods explained: STATUS, restarts, and next commands
How to read kubectl get pods output — READY, STATUS, RESTARTS, AGE — what CrashLoopBackOff and Pending mean, and which kubectl command to run next.
kubectl get pods is usually the first command people learn — and the first place they get stuck. The table looks simple until STATUS says CrashLoopBackOff or Pending and RESTARTS climbs. This guide is how to read that table and what to run next.
Pods are the running instances; Deployments keep them alive. If those words are fuzzy, skim What is a Deployment and Pods vs Deployments first.
The columns
| Column | Meaning | What to check next |
|---|---|---|
| NAME | Pod object name (often Deployment hash + random suffix) | Do not treat as a stable app ID |
| READY | Ready containers / total containers in the Pod | 0/1 → probes, crashes, or not started |
| STATUS | Phase / reason (Running, Pending, CrashLoopBackOff, …) | describe + logs + events |
| RESTARTS | How often containers restarted | Climbing + CrashLoop → logs --previous |
| AGE | How long this Pod object has existed | Very new after a rollout is normal |
List Pods (namespace matters)
kubectl get pods
kubectl get pods -n staging
kubectl get pods -A
kubectl get pods -o wide -n stagingSTATUS values you will see first
- Running — containers started; still check READY if traffic fails
- Pending — not scheduled yet (resources, PVC, taints) → describe for Events
- CrashLoopBackOff — container keeps exiting → logs and --previous
- ImagePullBackOff / ErrImagePull — image name, tag, or registry auth
- Completed — Job/Pod finished successfully (normal for Jobs)
- OOMKilled (in describe/lastState) — memory limit hit
Deep dives when you are past the table: CrashLoopBackOff, ImagePullBackOff, OOMKilled.
Next commands (always)
From get pods → evidence
kubectl describe pod POD_NAME -n staging
kubectl logs POD_NAME -n staging --tail=200
kubectl logs POD_NAME -n staging --previous
kubectl get events -n staging --sort-by=.lastTimestamp | tail -40Prefer label selectors when a Deployment owns many Pods: kubectl get pods -l app=api -n staging. For how to read describe output next, see kubectl describe explained. For live watching without retyping, K9s helps — then come back to kubectl for ticket-ready commands. See kubectl vs K9s.
Optional natural-language triage
Soft kprompt examples
kprompt "list pods in staging"
kprompt "explain why api pods are crashing" -n staging
kprompt "show events for api" -n stagingFor a full AI-assisted Pod loop without silent apply, see AI for Kubernetes Pods. For more kubectl patterns, see the natural-language cheat sheet.
Related posts
kubectl describe explained: what to look for on Pods and Deployments
kubectl describe vs get: how to read Pod and Deployment output, Events, Conditions, lastState, and which command to run next. Optional kprompt examples.
Read articleKubernetes ConfigMap vs Secret: what beginners need to know
ConfigMap vs Secret in Kubernetes: when to use each, env vars and volume mounts, kubectl get/describe, common beginner mistakes, and optional kprompt examples.
Read articleKubernetes labels and selectors explained (the glue between objects)
Labels and selectors in Kubernetes: how Deployments label Pods, how Services find them, kubectl -l and endpoints checks, common mistakes, and optional kprompt examples.
Read article