TL;DR
Almost every pod failure is diagnosed with the same four moves, in order: kubectl describe → events → kubectl logs (including --previous ) → kubectl debug / exec .
CrashLoopBackOff is a symptom, not a cause. The cause is in the previous container's logs or the exit code.
ImagePullBackOff is almost always: wrong tag, wrong registry, missing/wrong pull secret, or no network path to the registry.
Pending means the scheduler could not place the pod — the scheduling event literally tells you why (CPU, memory, taints, selectors, volume binding).
OOMKilled = exit code 137 with reason OOMKilled in describe .
Events disappear (roughly an hour by default).…