CrashLoopBackOff
The container starts, exits and is restarted with a growing delay. Find the reason in the previous attempt's logs and its exit code.
Troubleshooting guide · Pod stuck in Pending
A pod stays Pending when the scheduler cannot find a node that satisfies everything it asks for — its CPU and memory requests, its node selector and affinity, its tolerations, its volumes. The FailedScheduling event lists what ruled out each node, and that list is the diagnosis.
Updated
Pending is a phase, and it also covers a pod that has been placed on a node and is still pulling its image. A pod with no node assigned is the scheduling problem this guide is about:
NODE reads <none> for a pod the scheduler has not placed:
kubectl get pod <pod> -n <namespace> -o wide
The FailedScheduling event, at the bottom:
kubectl describe pod <pod> -n <namespace>
It reads like: 0/4 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 3 Insufficient cpu. Every node is accounted for, grouped by the reason it was ruled out — here, one node is tainted and the other three do not have enough CPU left to reserve.
What each node can offer, and what its pods have already requested, under Allocated resources:
kubectl describe nodes
The pod's own requests:
kubectl get pod <pod> -n <namespace> -o jsonpath='{range .spec.containers[*]}{.name}{"\t"}{.resources.requests}{"\n"}{end}'
If the cluster runs an autoscaler — Cluster Autoscaler or Karpenter — a Pending pod is what asks it for a node. When none arrives, the autoscaler's own events or logs say why, often a request no available instance type can fit.
If a Deployment shows fewer ready replicas and there is no Pending pod, the pods were never created. A ResourceQuota in the namespace refuses them at creation; the ReplicaSet's events say so:
Look for exceeded quota:
kubectl describe replicaset -n <namespace> -l app=<label>
In PodSteer
Read next
The container starts, exits and is restarted with a growing delay. Find the reason in the previous attempt's logs and its exit code.
The container used more memory than its limit and the kernel killed it. Confirm it, measure the real peak, then size the limit or fix the leak.
The node cannot fetch the container image. The event message says whether the image is missing, the registry refused, or it could not be reached.