Estimate how many nodes match a given nodeAffinity rule across your cluster.
nodeAffinity restricts scheduling to nodes carrying specific labels (instance type, GPU presence, availability zone, custom taints-free pools). The narrower the matching label set, the fewer nodes are eligible, directly capping how many replicas can be scheduled regardless of overall cluster size. This calculator estimates matching node count from a match percentage and checks whether that's enough capacity for your required replica count.
matchingNodes = floor(totalNodes × labelMatchPercent / 100)
requiredDuringSchedulingIgnoredDuringExecution is a hard constraint — pods that can't find a matching node stay Pending. preferredDuringSchedulingIgnoredDuringExecution is a soft weighted preference the scheduler tries to honor but will violate rather than leave a pod unscheduled.
Label match percentage often shrinks unexpectedly when combined with other constraints — a GPU-labeled node pool might also be tainted for a different workload, or already saturated by another team's pods, netting out effective availability lower than raw label matching alone suggests.
The autoscaler only adds nodes from node groups capable of satisfying a Pending pod's affinity rules — if no node group carries the required labels, autoscaling won't help and the pod stays Pending indefinitely.