Determine which pods can schedule onto tainted nodes given their tolerations.
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.
schedulableNodes = (totalNodes - taintedNodes) + toleratedNodes
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.
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.
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.