Sometimes nothing is broken and nothing is happening. No Pending Pod, no crash, no event on any Pod, because the controller never asked for one. The evidence is on the controller itself.
Paused
kubectl rollout status deploy/market-web
kubectl get deploy market-web -o jsonpath='{.spec.paused}'Waiting for deployment spec update to be observed...
trueA paused Deployment accepts changes to its template and does nothing with them. Someone paused it to batch several edits and forgot the second half: kubectl rollout resume deploy/market-web.
Scaled to zero
0/0 in the READY column is not a failure: the desired count is zero. An operator, a script or an autoscaler set replicas: 0. Scale it back, and check whether an HPA owns the number before you fight it.
Blocked by quota
kubectl describe rs -l app=market-worker | tail -2
kubectl describe quotaWarning FailedCreate Error creating: pods "market-worker-6d9f-" is forbidden: exceeded quota: team-quota, requested: pods=1, used: pods=4, limited: pods=4The Pod was refused before it existed, so the Pod layer is empty and the ReplicaSet carries the error. The same Events appear for a LimitRange violation or a missing ServiceAccount. Raise the quota, shrink the request, or free something.
Past the deadline
kubectl rollout status deploy/market-apierror: deployment "market-api" exceeded its progress deadlineA rollout that makes no progress for progressDeadlineSeconds (default 600) gets Progressing=False with reason ProgressDeadlineExceeded. It is a verdict, not a cause: the new Pods are failing for one of the reasons in the earlier lessons. kubectl rollout undo restores service while you read them.
Suspended
kubectl get cronjob report -o jsonpath='{.spec.suspend}'
kubectl patch cronjob report -p '{"spec":{"suspend":false}}'A CronJob with suspend: true keeps its schedule and creates no Jobs. It looks healthy in every table except LAST SCHEDULE.