Filters
How to search
  • Plain words find names, texts and examples.
  • "two words" finds the exact phrase.
  • --name or -x finds an option.
  • #word looks only inside commands.
  • @grep finds lessons and labs that use grep.
  • Filters: cat:network · in:labs · in:notes · level:rhcsa · ch:8 · root:yes. Put ! before a word to leave it out. OR between words means one of them.
  • ↑ ↓ to move · Enter to open · Esc to close · / to search

KubernetesPlatform series

6 Kubernetes numbers that decide capacity

Kubernetes capacity is not one number. It is a handful of defaults that decide how many pods fit, when they are evicted and how many failures you survive. Six numbers cover most of the argument.

Quick reference

NumberWhatWhy it matters
110Pods per nodeThe kubelet default maxPods. Plan pod CIDR and IPs around it.default
100mOne CPU requestA tenth of a core. Requests, not limits, decide where a pod fits.request
100MiEviction thresholdThe default memory.available floor before the kubelet evicts.memory
2Replicas minimumOne pod is a single point of failure. Two survive a rollout.HA
80%HPA CPU targetThe default target. Above it, the HPA adds pods up to max.HPA
3Zones to spreadThree failure domains keep etcd quorum through one zone loss.zones

Explained

How many fit

110 pods per node. That is the kubelet default maxPods, and it bounds the pod CIDR, the IP plan and the room left for DaemonSets. A node with 110 pods needs addresses for all of them. 100m CPU. A request of 100m is a tenth of a core. The scheduler adds requests, not limits, when it decides where a pod fits, so inflated requests waste a node before it is full.

When it breaks

100Mi. The kubelet's default hard eviction threshold is memory.available<100Mi. Below that, it evicts pods to reclaim memory, starting with the lowest-priority ones. 2 replicas. One pod is a single point of failure. Two survive a rolling update and a node drain; three survive a zone.

How it scales

80 percent. The default HPA target for CPU utilisation. Above it, the HPA adds pods, up to maxReplicas and no further. A bad request makes the percentage lie. 3 zones. Spread the control plane and workers across three failure domains. A three-member etcd cluster keeps quorum through one zone loss; two do not.

The honest caveat: 110 is a kubelet default, not a promise. CNI plugins, IP prefixes and instance size all cap it lower.

The lesson: capacity is a sum of defaults, so read them before you size a node.

In one line

Defaults decide capacity. Read them before you size a node or a namespace.

Check a node

kubectl describe node

More notes: Kubernetes

Open in the notes app: search, filters, copy This note on GitHub