Skip to content
Calcrivo

OpenShift Pod Density Calculator

Compare the 110 default and 250 maximum pods per node against the 4-pods-per-vCPU guideline and your DaemonSet overhead.

Inputs

nodes
vCPU
pods

Kubernetes guidance is roughly 4 pods per vCPU for mixed workloads.

pods

OpenShift defaults to 250; 110 is upstream default and 500 needs tuning.

pods

Logging, monitoring, CNI and CSI agents run on every node.

pods

Application Pods per Node

56pods

Cluster Pod Capacity

448pods

Ceiling from the vCPU Guideline

64pods

Pod Capacity Used

138.4%

Pod Headroom Remaining

0pods

Density Verdict

Nearly full — a single node loss would leave pods unschedulable

Step by step

  1. Values used

    Worker nodes = 8 nodes; vCPUs per node = 16 vCPU; Pods per vCPU guideline = 4 pods; maxPods in the kubelet config = 250 pods; DaemonSet pods per node = 8 pods; Application pods running today = 620 pods

  2. OpenShift Pod Density

    application pods per node = min(maxPods, vCPUs × pods per vCPU) − DaemonSet pods; cluster capacity is that multiplied by the node count.

  3. Application Pods per Node

    = 56 pods

  4. Cluster Pod Capacity

    = 448 pods

  5. Ceiling from the vCPU Guideline

    = 64 pods

  6. Pod Capacity Used

    = 138.4

  7. Pod Headroom Remaining

    = 0 pods

  8. Density Verdict

    = Nearly full — a single node loss would leave pods unschedulable

How it works

Two independent ceilings apply. maxPods is a hard kubelet limit driven by network and runtime scalability, while the pods-per-vCPU guideline reflects the fact that each pod costs the kubelet and the runtime real CPU regardless of what the container does. DaemonSets then take their slots off the top of whichever ceiling is lower. Density decides node size and therefore cost, and a cluster running above 90% of its pod capacity cannot survive a node failure — the evicted pods have nowhere to reschedule.

Formula

OpenShift Pod Density

application pods per node = min(maxPods, vCPUs × pods per vCPU) − DaemonSet pods; cluster capacity is that multiplied by the node count.

maxPods
Kubelet ceiling — 250 on OpenShift, 110 upstream, 500 only with tuning
pods per vCPU
Practical scheduling guide of about 4 pods per vCPU
DaemonSet pods
Per-node agents that consume slots before any application pod

Frequently Asked Questions

How is OpenShift Pod Density calculated?

application pods per node = min(maxPods, vCPUs × pods per vCPU) − DaemonSet pods; cluster capacity is that multiplied by the node count. Two independent ceilings apply. maxPods is a hard kubelet limit driven by network and runtime scalability, while the pods-per-vCPU guideline reflects the fact that each pod costs the kubelet and the runtime real CPU regardless of what the container does. DaemonSets then take their slots off the top of whichever ceiling is lower.

Why does OpenShift Pod Density matter?

Density decides node size and therefore cost, and a cluster running above 90% of its pod capacity cannot survive a node failure — the evicted pods have nowhere to reschedule.

What values do I need to enter?

This calculator takes 6 inputs: Worker nodes, vCPUs per node, Pods per vCPU guideline, maxPods in the kubelet config, DaemonSet pods per node, Application pods running today. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

Why is 250 the supported ceiling rather than 500?

Beyond about 250 pods the kubelet's status reporting, the CNI's IP address management and the iptables or nftables rule set all grow to the point where node status updates and service reconvergence become the bottleneck. 500 is achievable but requires deliberate tuning and testing.

You might also need