A CrashLoopBackOff status means Kubernetes has started a container, watched it exit, and is delaying the next restart so the same failure does not hammer the node. Troubleshooting starts by tying the visible pod status to the container's last termination state, logs, and workload events before changing the manifest.
The pod phase alone rarely names the root cause. kubectl describe pod shows the waiting reason, previous termination reason, exit code, restart count, owning controller, and event trail; kubectl logs with --previous often captures output from the short-lived container attempt that exited before the next restart.
A narrow fix starts only after the failing signal is clear. Use the namespace and pod name from the affected workload, confirm the exact container when the pod has more than one container, and change the owning Deployment, Job, StatefulSet, or manifest so the replacement pod is created from corrected state.
$ kubectl get pods -n app-prod NAME READY STATUS RESTARTS AGE web-5f45f8d54f-xh9g5 0/1 CrashLoopBackOff 1 (3s ago) 11s
$ kubectl describe pod -n app-prod web-5f45f8d54f-xh9g5
Name: web-5f45f8d54f-xh9g5
Namespace: app-prod
Controlled By: ReplicaSet/web-5f45f8d54f
##### snipped #####
Containers:
busybox:
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 1
Ready: False
Restart Count: 1
Environment: <none>
##### snipped #####
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning BackOff 1s (x2 over 2s) kubelet Back-off restarting failed container busybox in pod web-5f45f8d54f-xh9g5_app-prod
The Controlled By line tells which controller created the pod. For a Deployment, apply the fix to the Deployment or its source manifest instead of editing the generated pod.
$ kubectl logs -n app-prod pod/web-5f45f8d54f-xh9g5 --previous APP_CONFIG_PATH is required
For multi-container pods, add -c with the container name shown under Containers in the describe output.
Related: How to view Kubernetes pod logs
$ kubectl events -n app-prod --for pod/web-5f45f8d54f-xh9g5 --types=Warning LAST SEEN TYPE REASON OBJECT MESSAGE 1s (x2 over 2s) Warning BackOff Pod/web-5f45f8d54f-xh9g5 Back-off restarting failed container busybox in pod web-5f45f8d54f-xh9g5_app-prod
$ kubectl set env deployment/web -n app-prod APP_CONFIG_PATH=/etc/web/config.yaml deployment.apps/web env updated
The previous logs show a missing environment variable in this case. For probe failures, image startup errors, OOMKilled exits, or missing mounted files, change the specific field named by the logs, status, or events.
$ kubectl rollout status deployment/web -n app-prod deployment "web" successfully rolled out
$ kubectl get pods -n app-prod -l app=web NAME READY STATUS RESTARTS AGE web-56fd96f647-2gfnz 1/1 Running 0 29s
$ kubectl logs -n app-prod deployment/web configuration loaded from /etc/web/config.yaml