WintelGuy.com

Kubernetes Capacity Calculator

This tool estimates the required number of nodes and capacity of a K8s cluster based on the planned container workload.

Flexible Workload (Deployments, ReplicaSets, StatefulSets, etc.)
Name CPU (millicores) Memory (MiB) # of Pods
Per-Node Workload (DaemonSets, Node-level sidecars, etc.)
Name CPU (millicores) Memory (MiB)
System Overhead / Reservations (per Node)
Cluster Settings
Sizing Mode


Node Specs (if selected)
Node Count (if selected)
Results:
Flexible Workloads
Total CPU (cores) 0.80
Total Memory (GiB) 1.00
Node-bound Workloads
CPU per Node (cores) 0.05
Memory per Node (GiB) 0.06
System Overhead & Reservations
CPU per Node (cores) 0.20
Memory per Node (GiB) 0.29
Node Sizing Results
Number of Nodes 1
vCPU per Node 4
Memory per Node (GiB) 16
Cluster Capacity
Total vCPU 4
Total Memory (GiB) 16
Cluster Utilization
CPU (cores) 1.05
Memory (GiB) 1.26
CPU (%) 26.25
Memory (%) 7.86
Average Node Utilization
CPU per Node (cores) 1.05
Memory per Node (GiB) 1.26
CPU per Node (%) 26.25
Memory per Node (%) 7.86

K8s Sizing Calculator - Overview

This calculator helps estimate the required Kubernetes cluster size based on the expected workload, operational overhead, and resource allocation strategies. It supports two sizing modes:

  • determining the required number of nodes based on the chosen node specifications
  • determining the required node specifications for a given node count

The calculator accepts CPU and memory requirements for application workloads, per-node DaemonSet workloads, and system/OS overhead. It produces consolidated totals, estimates per-node utilization, and provides guidance for selecting an appropriate node configuration.

This tool is intended for high-level capacity planning, early design estimation, and educational use. It does not replace detailed workload planning and performance tuning.

How to Use the Calculator

  • Enter the resource requirements for application (flexible) workload (CPU, memory, number of pods).
  • Enter the node-bound workload details (DaemonSets and per-node platform agents).
  • Enter the OS and Kubernetes system overhead values.
  • Choose the sizing mode: by Node Specs or by Node Count.
  • Optionally adjust the eviction threshold, target node utilization, and any default values.
  • Click Calculate and review the resulting sizing recommendations, including estimated cluster and node capacity utilizations.

Description of Input Fields

  • Flexible Workload (Movable Pods) - These are pods that can be placed on any node and scale horizontally. Examples include Deployments, ReplicaSets, StatefulSets, and typical services.
    • Name - workload description (optional).
    • CPU per Pod (millicore) - CPU requirements for each pod instance.
    • Memory per Pod (MiB) - memory requirements for each pod instance.
    • Number of Pods - total number of running pods for this workload.
    You may add multiple rows for different workloads by clicking on the "+" button.
  • Per-Node Workload (DaemonSet / Node-Bound Agents) - These are pods deployed one per node, regardless of how many nodes exist. Examples include monitoring agents, log shippers, and platform tools.
    • Name - workload description (optional).
    • CPU per Pod (millicore) - CPU requirements for the pod on each node.
    • Memory per Pod (MiB) - memory requirements for the pod on each node.
    Add more rows by clicking on the "+" button.
  • System Overhead / Reservations (per Node) - Node's CPU and memory allocated/reserved for Linux OS processes, kubelet, containerd, and other Kubernetes services and system daemons.
    • CPU for OS & K8s Services (millicores)
    • Memory for OS & K8s Services (MiB)
  • Eviction Threshold - Kubernetes requires additional unused memory as a buffer. This value represents the available memory threshold before the kubelet begins evicting pods.
  • Target Utilization - Defines the desired maximum CPU and memory usage, expressed as a percentage. It accounts for: headroom, performance variability, pod autoscaling, maintenance events, and pod rescheduling.
  • Sizing Modes:
    • Determine Number of Nodes (from Node Specs) - Use this mode when you already know the instance type or node specifications. Provide:
      • vCPU per node
      • Memory per node (GiB)
      The calculator computes total workload (movable + per-node + system) and determines how many nodes are required to fit the workloads under the target utilization.
    • Determine recommended node specs from node count - Use this mode when you know how many nodes you want to run. Provide the desired number of nodes. The calculator determines the required CPU and memory per node, which helps selecting the appropriate instance type or bare-metal server configuration.

The following diagram illustrates node memory allocation in relation to workload characteristics and cluster memory configuration.

K8s Sizing Recommendations and Best Practices

  • Use realistic resource requirements - decide whether to use requests or limits as the base for sizing calculations.
  • Avoid targeting 100% utilization - use 60-80% to maintain stability and headroom.
  • Include all per-node workloads in sizing - make sure to account for all DaemonSets, agents, and tools.
  • Account for OS and K8s overhead - ensure sufficient resource allocation for system and kubelet processes.
  • Consider pod density limits per node.
  • Consider autoscaling where possible - improve cluster utilization and reduce over-provisioning.
  • Distribute workloads across availability zones - ensure high availability and reduce blast radius for failures.
  • Evaluate real usage - use monitoring tools and load testing to validate and refine cluster sizing.