Kubernetes Pod Calculator
How many pods can your Kubernetes cluster run?
Find out how many pods your Kubernetes cluster can run before hitting resource limits. Enter node CPU cores, memory per node, pod CPU requirements, and pod memory requirements — see maximum pods per node, total cluster capacity, and whether CPU or memory is your bottleneck. Assumes uniform pod resource requirements across all pods.
—
Send feedback
💡 Share your idea or report a problem
✓ Thanks! We'll take a look.
Learn more
How It Works
The formula, explained simply
Kubernetes scheduling works like airport gate assignments — each pod needs a guaranteed seat (resources) before boarding (deployment). When you create a pod with resource requests, the scheduler finds a node with enough available CPU and memory to fulfill those requests. Unlike airlines, Kubernetes never overbooks.
The scheduler tracks two numbers per node: total capacity and allocated requests. A node with 4 CPU cores might show 3.2 cores available after system processes claim their share. Each pod's resource request reduces this available pool, even if the pod isn't using its full allocation. Once requests exceed capacity, no new pods can schedule on that node.
System reserve matters more than most developers realize. Kubelet, container runtime, and OS processes need consistent resources to keep the node healthy. Without proper reserves, these critical processes compete with your application pods, causing node instability, failed health checks, and cascading failures across your cluster.
When To Use This
Right tool, right situation
Use this calculator during cluster sizing to determine how many nodes you need for a given workload. Before deploying a new application, calculate whether your existing cluster can handle the additional pods or if you need to scale. When optimizing costs, find the right balance between node size and pod resource requests to maximize utilization without overcommitting.
Capacity planning becomes critical before traffic spikes or product launches. Calculate whether your cluster can handle 2x or 5x current load, then provision nodes accordingly. Monitor actual pod resource usage over time and adjust requests to match real consumption patterns. This prevents both resource waste and performance degradation under load.
Use this tool when choosing between fewer large nodes or many small nodes. Large nodes provide better pod density but create blast radius concerns — if one node fails, you lose more capacity. Small nodes offer better fault tolerance but may have lower pod density due to fixed system overhead per node.
Common Mistakes
Why results sometimes look wrong
The biggest mistake is ignoring resource requests entirely. Pods without requests can be scheduled anywhere, leading to resource contention and unpredictable performance. Always set both CPU and memory requests based on actual application needs, not worst-case scenarios. Overestimating requests wastes cluster capacity and increases costs.
Another common error is forgetting system reserve when calculating capacity. A 4-core node cannot run 8 pods that each request 0.5 CPU — system processes need their share first. Cloud providers like AWS EKS automatically reserve resources, but you must account for this in capacity planning. Self-managed clusters require manual kubelet configuration.
Developers often confuse requests with limits. Resource requests guarantee minimum allocation for scheduling decisions, while limits cap maximum usage. Setting requests too low causes pods to be scheduled on overcommitted nodes. Setting requests equal to limits prevents resource sharing and reduces cluster efficiency. Use requests for capacity planning and limits for isolation.
The Math
Worked examples and deeper derivation
Pod capacity calculation involves floor division to find the maximum whole pods that fit within resource constraints. For each resource type, divide available capacity by per-pod request: CPU pods = floor(available_cpu / pod_cpu_request) and Memory pods = floor(available_memory / pod_memory_request). The final pods per node equals the minimum of these two values.
Available resources equal total node capacity minus system reserve: available = capacity × (1 - reserve_percentage/100). For example, a node with 4 CPU cores and 10% reserve has 3.6 cores available for pod scheduling. If each pod requests 0.5 CPU, the node can run floor(3.6/0.5) = 7 pods from a CPU perspective.
The bottleneck resource determines actual pod count. Consider a node with 8 CPU cores and 16 GB RAM, running pods that request 1 CPU and 4 GB memory with 20% system reserve. CPU allows floor(6.4/1) = 6 pods, memory allows floor(12.8/4) = 3 pods. The node runs 3 pods maximum, constrained by memory despite having unused CPU capacity.
Expert Unlock
The thing most explanations skip
The default Kubernetes pod limit is 110 pods per node, regardless of resource availability. Even if your node has enough CPU and memory for 200 pods, you'll hit this hard limit first. Production clusters often override this with --max-pods-per-node, but consider network and storage implications before going beyond 110.
Why can't I run more pods even when my cluster looks empty?
Need something this doesn't cover?
Suggest a tool — we'll build it →