All posts
Emire Barış profile photoEmire Barış · Member1 min read

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

ColumnMeaningWhat to check next
NAMEPod object name (often Deployment hash + random suffix)Do not treat as a stable app ID
READYReady containers / total containers in the Pod0/1 → probes, crashes, or not started
STATUSPhase / reason (Running, Pending, CrashLoopBackOff, …)describe + logs + events
RESTARTSHow often containers restartedClimbing + CrashLoop → logs --previous
AGEHow long this Pod object has existedVery 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 staging

STATUS 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 -40

Prefer label selectors when a Deployment owns many Pods: kubectl get pods -l app=api -n staging. 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 staging

For a full AI-assisted Pod loop without silent apply, see AI for Kubernetes Pods. For more kubectl patterns, see the natural-language cheat sheet.