Kubernetes scheduler uses a two-phase process: filtering (or predication) and scoring (or prioritization). During the filtering phase, the scheduler filters out nodes that cannot run the pod based on various predicates.
A) PodFitsResources - This is a default predicate that checks if a node has sufficient resources (CPU, memory) to accommodate the pod. It ensures the node has enough available capacity to run the pod's resource requests. This IS a default predicate.
B) NoDiskConflict - This is a default predicate that checks if the volumes requested by the pod are available on the node or if there are any conflicts with existing volumes. This IS a default predicate.
C) MatchNodeSelector - This is a default predicate that checks if the node matches the node selector specified in the pod specification. This ensures pods are scheduled onto nodes that match the labels specified in the pod's nodeSelector field. This IS a default predicate.
D) PodPriority - Here's where we need to be careful. PodPriority is not a filtering predicate but rather a feature that influences the scheduling order of pods. Pod priority indicates the importance of a pod relative to other pods and is used during the prioritization phase (scoring), not the filtering phase. It helps determine which pod should be scheduled first when there are multiple pending pods.