No node has enough free CPU or memory
CommonThe pod's requests — not its usage — exceed what any single node has unallocated. This catches people because a cluster can look busy at 40% actual utilisation while being fully committed on requests. The scheduler reasons about requests, not about what is really being used.
Confirm
kubectl describe pod <pod> | grep -A10 Events
"Insufficient cpu" or "Insufficient memory" in the FailedScheduling message
Fix
- Lower the request if it was set higher than the workload genuinely needs.
- Add capacity, or free it by right-sizing over-requested pods elsewhere.
- Check the request is not accidentally enormous — a units mistake such as 1000 instead of 1000m asks for a thousand CPUs.
kubectl describe nodes | grep -A5 'Allocated resources'
Shows committed requests per node, which is what the scheduler actually weighs.