Cheveo Cheatsheet

Pod Pending Cheatsheet

12 kubectl commands and 23 causes in 5 categories - with a decision tree and a concrete fix per pattern. Printable, free, no signup.

Read the article →

The workflow

1 Events
2 Resources
3 Constraints
4 Volumes
5 Images

Read events

1

Pod events

kubectl describe pod <name> | tail -20

→ The Events section at the end - literally tells you what is wrong.

2

Scheduler events

kubectl get events --field-selector reason=FailedScheduling -A --sort-by=.lastTimestamp | tail -20

→ Every scheduling problem cluster-wide, sorted by time.

3

Pending pods cluster-wide

kubectl get pods -A --field-selector=status.phase=Pending

→ Find every Pending pod at a glance.

Check resources

4

Node allocation

kubectl describe node <node> | grep -A 8 "Allocated resources"

→ Total requests vs capacity - reveals over-provisioned nodes.

5

Live usage

kubectl top nodes

→ Current usage per node - the fastest resource scan.

6

Pod requests

kubectl get pod <name> -o jsonpath='{range .spec.containers[*]}{.name}: {.resources.requests}{"\n"}{end}'

→ What the pod is asking for - often the unrealistic root cause.

Scheduler constraints

7

Node labels

kubectl get nodes --show-labels

→ For nodeSelector and affinity mismatch diagnosis.

8

Show taints

kubectl describe nodes | grep -A 1 "Taints:"

→ Which nodes carry taints - who lacks a toleration.

9

Node conditions

kubectl describe node <node> | grep -A 10 "Conditions"

→ DiskPressure, MemoryPressure, NotReady at a glance.

Volumes & images

10

PVC status

kubectl get pvc -A | grep -v Bound

→ Every non-Bound PVC - classic source of Pod Pending.

11

StorageClass status

kubectl get sc

→ Which StorageClasses exist - is one marked default?

12

Image pull failures

kubectl describe pod <name> | grep -A 3 "Failed\|ErrImagePull\|InvalidImage"

→ Image issues extracted from the Events section.

23 causes quick index

Complete listing across 5 categories with a quick-check per pattern.

Resources

4 causes

Insufficient CPU

describe node → Allocated CPU

Insufficient Memory

describe node → Allocated Memory

Insufficient ephemeral-storage

describe node → ephemeral-storage

Requests > node capacity

Container requests > max node spec

Scheduler

6 causes

NodeSelector mismatch

kubectl get nodes -l <selector> empty

NodeAffinity (required)

Events: didn't match Pod's node affinity

Taint without toleration

Events: node had untolerated taint

PodAntiAffinity

Events: didn't satisfy anti-affinity

TopologySpreadConstraints

Events: skew exceeds maxSkew

Pod topology DoNotSchedule

Events: pod topology

Volumes

4 causes

PVC not Bound

kubectl get pvc | grep -v Bound

PVC RWO already mounted

Events: Multi-Attach error

Volume topology conflict

Events: volume node affinity conflict

StorageClass missing

kubectl get sc

Images

4 causes

ImagePullBackOff

Events: Failed to pull image

ErrImagePull

Events: Error: ErrImagePull

InvalidImageName

Events: InvalidImageName

Missing imagePullSecrets

Events: pull access denied

Node & quota

5 causes

NodeNotReady

kubectl get nodes → NotReady

DiskPressure

describe node → Conditions

MemoryPressure / PIDPressure

describe node → Conditions

ResourceQuota exceeded

Events: exceeded quota

LimitRange violation

Events: minimum cpu usage violated

Quick decisions

FailedScheduling: Insufficient cpu/memory
→ Lower requests or scale the cluster
FailedScheduling: untolerated taint
→ Add tolerations: to the pod
PVC stuck Pending
→ Check StorageClass + provisioner
Volume node affinity conflict
→ volumeBindingMode: WaitForFirstConsumer
ImagePullBackOff: pull access denied
→ Check imagePullSecrets
1-Day Intensive Workshop

Kubernetes Debugging - systematic, not guesswork

Replay real production incidents, internalise kubectl workflows, find root causes in minutes.

View workshop details