Pod cannot be placed on any node
Production Risk
Pod contributes no capacity; scaled-out workloads may not meet their replica count.
An Unschedulable pod has been accepted by the API server but the scheduler cannot find a node that satisfies all of the pod's constraints. The pod remains in Pending state. Common causes include insufficient CPU/memory on all nodes, node selector or affinity mismatches, and taint/toleration conflicts.
- 1No node has sufficient CPU or memory to satisfy the pod resource requests
- 2nodeSelector or nodeAffinity rules do not match any node labels
- 3Node taints are not tolerated by the pod
- 4Pod requires a specific topology (zone, region) that is at capacity
Pod stays in Pending state; kubectl describe shows Unschedulable condition.
kubectl describe pod mypod | grep -A 5 "Events:" # Warning FailedScheduling default-scheduler 0/3 nodes are available: # 3 Insufficient memory.
expected output
Warning FailedScheduling ... 0/3 nodes are available: 3 Insufficient memory.
Fix 1
Read the scheduler failure reason
WHEN Pod is stuck in Pending
kubectl describe pod mypod | grep -A 20 "Events:" kubectl get events --field-selector involvedObject.name=mypod,reason=FailedScheduling
Why this works
The scheduler emits a detailed event explaining exactly why each node was rejected.
Fix 2
Scale up the cluster or reduce resource requests
WHEN Cluster capacity is exhausted
# Check current node capacity
kubectl describe nodes | grep -A 5 "Allocated resources:"
# Reduce pod requests if over-specified
resources:
requests:
cpu: "100m"
memory: "128Mi"Why this works
Adding capacity or right-sizing requests allows the scheduler to place the pod.
Kubernetes Documentation
Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev