Scheduling
Filter and score
38 / 82

Filtering removes nodes that cannot run the Pod; scoring picks the best of the rest.

A node that fails even one filter is disqualified, not merely disliked. The Pod needs 500m CPU, an SSD, and no GPU taint.

New Pod500m CPUnode-a zone-afree 2.0 CPU, ssdnode-b zone-afree 0.2 CPU, ssdnode-c zone-bfree 3.0 CPU, hddnode-d zone-bfree 1.5 CPU, ssdnode-e zone-cfree 2.5 CPU, ssd, GPU taintnode-b zone-aInsufficient CPUnode-c zone-bNeeds ssd: label mismatchnode-e zone-cUntolerated taintFILTER: 3 of 5 nodes removednode-a score 78balanced, spread bonusnode-d score 64less free, zone already usedSCORE: rank the survivorsBind to node-aspec.nodeName = node-aIf every node fails a filter:Pod stays Pending and the event says why:FailedScheduling: 0/5 nodes availablepreemption may then be tried (PostFilter)

kubectl describe pod on a Pending Pod names the exact filter that failed on each node, which is almost always the fastest diagnosis.