Kubernetes - Extension Points
- 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.