Kubernetes - Extension Points
Understand the different plugins categories.
- Kubernetes scheduler uses a set of plugins to determine the scheduling of pods.
- These plugins are categorized into several stages know as extension points:
QueueSort
- Provides the logic to sort pods in the scheduling queue.
- Example: PrioritySort
PreFilter
- These plugins are used to pre-process or check information about the pod or the cluster before filtering.
- Example: NodeResourcesFit, PodTopologySpread, InterPodAffinity
Filter
- These plugins are used to filter out nodes that cannot run the Pod.
- Examples: NodeUnschedulable, TaintToleration, NodeAffinity, NodeResourcesFit, VolumeBinding
PostFilter
- These plugins are called after Filter phase, but only when no feasible nodes were found for the pod.
- Example: DefaultPreemption
PreScore
- These plugins are used to perform any work required before scoring.
- Example: InterPodAffinity, PodTopologySpread, TaintToleration
Score
- These plugins provide a score to each node that has passed the filtering phase to prioritize them for scheduling.
- Examples: NodeAffinity, InterPodAffinity, NodeResourcesBalancedAllocation, NodeResourcesLeastAllocated, VolumeBinding, PodTopologySpread
Reserve
- This is an informational extension point that happens once the scheduler has assumed a pod will be scheduled to a node, useful to trigger pre-emptive actions.
- Example: VolumeBinding
Permit
- These plugins can prevent or delay the binding of a Pod.
- Examples: VolumeBinding, PodTopologySpread
PreBind
- These plugins perform any work required before a pod is bound.
- Example: VolumeBinding
Bind
- These plugins bind a pod to a Node. Bind plugins are called in order and once one has done the binding, the remaining plugins are skipped.
- Example: DefaultBinder
PostBind
- This is an informational extension point that is called after a pod has been bound.
- No default plugins.
Unreserve
- This is an informational extension point that is called if a pod was reserved and then rejected in a later phase.
- Example: VolumeBinding
This post is licensed under CC BY 4.0 by the author.