How to fix Too many pods in Kubernetes
This error occurs when a node has reached its maximum pod capacity, preventing new pods from being scheduled. The limit is determined by kubelet configuration and available IP addresses.
Quick fix
Fixes Too many pods
# Check allocatable pods
kubectl get node <node-name> -o jsonpath='{.status.allocatable.pods}'
# Count current pods on node
kubectl get pods --all-namespaces --field-selector spec.nodeName=<node-name> | wc -l
# Detailed view
kubectl describe node <node-name> | grep -A5 "Allocated resources"- Check node pod capacity and usage
- Add more nodes to distribute pods
- Use larger instance types
- Increase maxPods in kubelet configuration
# Check allocatable podskubectl get node <node-name> -o jsonpath='{.status.allocatable.pods}'# Count current pods on nodekubectl get pods --all-namespaces --field-selector spec.nodeName=<node-name> | wc -l# Detailed viewkubectl describe node <node-name> | grep -A5 "Allocated resources"Too many pods
What this error means
The "Too many pods" error indicates that a Kubernetes node has reached its maximum pod capacity. Every node has a hard limit on how many pods it can run, determined by two factors: the kubelet's maxPods configuration (default 110) and the number of available IP addresses. Kubernetes officially recommends not exceeding 110 pods per node to maintain cluster stability. However, cloud providers often have different limits based on instance types and networking configurations. In cloud environments, IP address exhaustion is the most common cause. Each pod typically requires its own IP from the cluster's network range, and smaller instance types support fewer network interfaces and IPs.
Typical symptoms
- Pod stuck in Pending with "Too many pods" message
- kubectl describe node shows pods at or near allocatable limit
- New deployments fail while existing pods run fine
- Cluster autoscaler triggers but pods still pending
- HPA unable to scale up deployments
Common causes
- Node reached kubelet maxPods limit (default 110)
- IP address exhaustion on the node (especially in cloud VPCs)
- Small instance type with limited ENI/IP capacity
- Many small pods consuming pod slots without using much CPU/memory
- DaemonSets and system pods consuming available slots
How to fix "Too many pods"
View the node's pod limits and current allocation:
# Check allocatable pods
kubectl get node <node-name> -o jsonpath='{.status.allocatable.pods}'
# Count current pods on node
kubectl get pods --all-namespaces --field-selector spec.nodeName=<node-name> | wc -l
# Detailed view
kubectl describe node <node-name> | grep -A5 "Allocated resources"The simplest solution is horizontal scaling—add more nodes:
# GKE
gcloud container clusters resize <cluster> --num-nodes=5
# EKS
aws eks update-nodegroup-config --cluster-name <cluster> \
--nodegroup-name <ng> --scaling-config desiredSize=5
# AKS
az aks scale --resource-group <rg> --name <cluster> --node-count 5Larger instances support more pods due to more network interfaces and IPs:
| AWS Instance | Max Pods (VPC CNI) |
|--------------|-------------------|
| t3.micro | 4 |
| t3.medium | 17 |
| m5.large | 29 |
| m5.xlarge | 58 |
Replace node groups with larger instance types for better pod density.
If resources allow, increase the kubelet maxPods setting:
# Edit kubelet config (location varies by setup)
sudo vim /var/lib/kubelet/config.yamlAdd or modify:
maxPods: 150Then restart kubelet:
sudo systemctl restart kubeletNote: This doesn't help if IP exhaustion is the actual limit.
For EKS, enable prefix delegation to dramatically increase IP capacity:
kubectl set env daemonset aws-node -n kube-system \
ENABLE_PREFIX_DELEGATION=trueThis assigns /28 IP prefixes instead of individual IPs, increasing capacity from ~29 to 110+ pods on m5.large instances.
Advanced notes
The effective pod limit is the minimum of:
1. kubelet --max-pods setting
2. Available IP addresses (instance ENI * IPs per ENI)
3. Node resources (CPU, memory) divided by pod requests
For AWS EKS with VPC CNI, calculate max pods:
Max Pods = (ENIs * (IPs per ENI - 1)) + 2With prefix delegation enabled:
Max Pods = (ENIs * ((IPs per ENI - 1) * 16)) + 2GKE allows up to 256 pods per node with the --max-pods-per-node flag during cluster creation. Azure AKS supports up to 250 pods per node with Azure CNI.
Best practice: Scale horizontally (add nodes) rather than maximizing pod density per node. High pod counts stress the container runtime and can cause performance issues.
Frequently asked questions
- What does "Too many pods" mean?
- The "Too many pods" error indicates that a Kubernetes node has reached its maximum pod capacity. Every node has a hard limit on how many pods it can run, determined by two factors: the kubelet's maxPods configuration (default 110) and the number of available IP addresses. Kubernetes officially recommends not exceeding 110 pods per node to maintain cluster stability.
- How do I fix "Too many pods"?
- This error occurs when a node has reached its maximum pod capacity, preventing new pods from being scheduled. The limit is determined by kubelet configuration and available IP addresses.
- What causes "Too many pods"?
- Node reached kubelet maxPods limit (default 110) IP address exhaustion on the node (especially in cloud VPCs) Small instance type with limited ENI/IP capacity
- Is the "Too many pods" error serious?
- It is a medium-severity error — more of a blocker than a risk. The steps above resolve it.
Official resources & further reading
- 📚Kubernetes Official Documentation
- 📖Kubernetes: Large cluster considerations(Official Docs)
- 📖GKE: Configure max pods per node(Official Docs)
- 🐙