Practical guide
Pods per node: a Kubernetes capacity worked example
Estimate pods per Kubernetes node from allocatable CPU, memory, resource requests, reserve, and the node pod limit.
Updated
Pod capacity is the smallest of CPU-based capacity, memory-based capacity, and the configured node Pod limit. Start with allocatable resources, not raw machine capacity, then reserve explicit headroom.
Numeric example
Input: 8,000 millicores and 32,768 MiB allocatable, 10% additional reserve, and Pods requesting 250m CPU and 512 MiB. Usable CPU is 7,200m, allowing floor(7,200 ÷ 250) = 28 Pods. Usable memory is 29,491.2 MiB, allowing 57 Pods. With a node limit of 110, CPU is the constraint and the arithmetic output is 28 Pods.
Use the pod capacity calculator for this comparison and the Kubernetes resource calculator to total requests across replicas.
If you run plain Docker rather than Kubernetes, the Docker memory calculator estimates capacity from host reserves, headroom, and per-container allocation instead of Pod requests.
What the result excludes
The result is not a scheduling guarantee. DaemonSets, topology constraints, IP-address availability, ephemeral storage, disruption capacity, and uneven Pod sizes can reduce actual placement. Keep operational headroom rather than targeting the arithmetic maximum.
Official sources
- https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/