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.

Updated June 2026 · How this works

Worth knowing
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.

Small web application cluster
3 nodes with 4 CPU cores and 16 GB RAM each, pods requesting 0.5 CPU and 2 GB memory, 10% system reserve
Each node can fit 7 pods (limited by CPU: 3.6 available cores ÷ 0.5 per pod), total capacity is 21 pods across the cluster.
Memory-intensive data processing
2 nodes with 8 CPU cores and 8 GB RAM each, pods requesting 0.1 CPU and 4 GB memory, 15% system reserve
Each node can only fit 1 pod due to memory constraints (6.8 GB available ÷ 4 GB per pod), total capacity is 2 pods despite having plenty of CPU.
CPU-intensive compute workload
4 nodes with 2 CPU cores and 32 GB RAM each, pods requesting 1.5 CPU and 1 GB memory, no system reserve
Each node can fit 1 pod due to CPU constraints (2 cores ÷ 1.5 per pod), total capacity is 4 pods with memory capacity unused.
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?

How do I know if CPU or memory is limiting my pod capacity?
The calculator shows which resource is your bottleneck. If CPU-constrained, consider pods with lower CPU requests or nodes with more cores. If memory-constrained, reduce pod memory requests or add nodes with more RAM. You can also check kubectl describe nodes to see actual resource allocation.
What happens if I don't set resource requests for my pods?
Pods without resource requests can be scheduled anywhere, but Kubernetes can't guarantee they'll have enough resources to run properly. This leads to resource contention, performance issues, and unpredictable pod evictions. Always set CPU and memory requests for production workloads.
Should I include system reserve in my capacity planning?
Yes, always reserve 10-20% of node capacity for kubelet, container runtime, and operating system processes. Cloud providers like AWS EKS automatically reserve resources, but self-managed clusters need manual configuration. Without system reserve, nodes become unstable under load.

Need something this doesn't cover?

Suggest a tool — we'll build it →