Pod Failures¶
Start every investigation with:
Pending¶
The Pod was accepted but cannot start yet.
- Events say
0/N nodes are available. Insufficient CPU or memory, taints without tolerations, or anodeSelectoror affinity that matches nothing. - PVC not bound. See Storage.
- Quota exceeded. Check
kubectl describe resourcequota -n <ns>.
ImagePullBackOff¶
- A typo in the image name or tag.
- A private registry without
imagePullSecrets. - Registry rate limits or network access from the node.
CrashLoopBackOff¶
The container starts, exits, and Kubernetes keeps restarting it with growing delays.
kubectl logs <pod> -n <ns> --previous
kubectl get pod <pod> -n <ns> \
-o jsonpath='{.status.containerStatuses[0].lastState.terminated}'
| Exit code | Usual meaning |
|---|---|
| 1 | Application error. Read the logs. |
| 137 | Killed (SIGKILL). Often an OOM kill. |
| 143 | Terminated (SIGTERM). Check shutdown handling. |
Common causes: missing config or Secret, wrong command, a liveness probe that fails too early (add a startupProbe), or a dependency that is not ready.
OOMKilled¶
kubectl get pod <pod> -n <ns> \
-o jsonpath='{.status.containerStatuses[0].lastState.terminated.reason}'
If it prints OOMKilled, raise the memory limit, or find the leak. See Requests, Limits and QoS.
CreateContainerConfigError¶
A referenced ConfigMap or Secret key does not exist, or the name is wrong. describe names the missing object.
Running but not Ready¶
The readiness probe is failing. Check the probe path and port, then run it by hand:
Evicted¶
The node ran short of memory, disk or PIDs. See Nodes, and set realistic requests so important Pods are not first in line.