Run kubectl describe pod first, because its events usually name the cause, and then read the container logs. What you find points to one of four common problems:
Resource constraints. A Pod stuck in Pending cannot be scheduled, most often because no node has enough free CPU or memory. The events show the reason, and kubectl describe node shows each node's capacity.
Image pull errors.ImagePullBackOff means Kubernetes cannot pull the image. Check the image name and tag, registry access and the pull secret.
Configuration errors. A missing Secret or ConfigMap keeps the container from starting, and the events name it. Bad settings, such as an invalid environment variable, usually crash the app, so check kubectl logs --previous.
Network issues. If the app starts but cannot reach its dependencies, test DNS resolution and whether those Services have endpoints.
# Check pod status
kubectl get pods -o wide
# Describe pod for events
kubectl describe pod <pod-name>
# Check logs
kubectl logs <pod-name>
# Check previous container logs if restarting
kubectl logs <pod-name> --previous
# Check node resources
kubectl top nodes
kubectl describe node <node-name>
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.