Skip to content
Calcrivo

Taints and Tolerations Calculator

Calculate the number of nodes schedulable by a workload after accounting for tainted nodes and the tolerations it carries.

Inputs

nodes
nodes

Nodes carrying a NoSchedule/NoExecute taint (e.g. dedicated GPU or spot nodes).

nodes

Of the tainted nodes, how many this pod's tolerations allow it to be scheduled on.

pods

Schedulable Nodes

36nodes

Effective Pod Capacity

720pods

Nodes Still Off-Limits

4nodes

Cluster Capacity Off-Limits

10.0%

Step by step

  1. Schedulable nodes = total − tainted + tolerated

    40 − 10 + 6

    = 36

  2. Capacity impact

    36 × 20

    = 720 pods

How it works

Taints repel pods from a node unless the pod carries a matching toleration, commonly used to reserve nodes for dedicated workloads (GPU nodes, spot/preemptible instances, specific teams). A given workload's schedulable node count is the untainted nodes plus whichever tainted nodes its tolerations unlock — nodes it neither avoids nor tolerates remain permanently off-limits to it.

Formula

schedulableNodes = (totalNodes - taintedNodes) + toleratedNodes

N
Total nodes in the cluster
T
Number of tainted nodes
T_t
Tainted nodes this workload tolerates
S
Nodes schedulable for this workload

Frequently Asked Questions

What's the difference between NoSchedule and NoExecute taints?

NoSchedule blocks new pods from being scheduled onto the node but doesn't affect pods already running there. NoExecute goes further — it evicts existing pods that don't tolerate the taint, in addition to blocking new ones.

Do tolerations guarantee a pod will be scheduled on a tainted node?

No — a toleration only removes the taint as a blocker; the scheduler still needs to independently decide to place the pod there based on other constraints like resource requests, affinity rules, and available capacity.

Why do cloud providers taint spot/preemptible node pools?

So only workloads explicitly designed to tolerate interruption (with a matching toleration) get scheduled there — this prevents critical stateful workloads from silently landing on cheaper but preemptible capacity.

You might also need