@@ -10,28 +10,27 @@ weight: 60
10
10
11
11
{{< feature-state for_k8s_version="v1.19" state="stable" >}}
12
12
13
- The scheduling framework is a pluggable architecture for the Kubernetes scheduler.
14
- It adds a new set of "plugin" APIs to the existing scheduler. Plugins are compiled into the scheduler. The APIs allow most scheduling features to be implemented as plugins, while keeping the
15
- scheduling "core" lightweight and maintainable. Refer to the [ design proposal of the
16
- scheduling framework] [ kep ] for more technical information on the design of the
17
- framework.
13
+ The _ scheduling framework_ is a pluggable architecture for the Kubernetes scheduler.
14
+ It consists of a set of "plugin" APIs that are compiled directly into the scheduler.
15
+ These APIs allow most scheduling features to be implemented as plugins,
16
+ while keeping the scheduling "core" lightweight and maintainable. Refer to the
17
+ [ design proposal of the scheduling framework] [ kep ] for more technical information on
18
+ the design of the framework.
18
19
19
20
[ kep ] : https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/624-scheduling-framework/README.md
20
21
21
-
22
-
23
22
<!-- body -->
24
23
25
- # Framework workflow
24
+ ## Framework workflow
26
25
27
26
The Scheduling Framework defines a few extension points. Scheduler plugins
28
27
register to be invoked at one or more extension points. Some of these plugins
29
28
can change the scheduling decisions and some are informational only.
30
29
31
- Each attempt to schedule one Pod is split into two phases, the ** scheduling
32
- cycle** and the ** binding cycle** .
30
+ Each attempt to schedule one Pod is split into two phases, the
31
+ ** scheduling cycle** and the ** binding cycle** .
33
32
34
- ## Scheduling Cycle & Binding Cycle
33
+ ### Scheduling cycle & binding cycle
35
34
36
35
The scheduling cycle selects a node for the Pod, and the binding cycle applies
37
36
that decision to the cluster. Together, a scheduling cycle and binding cycle are
@@ -51,7 +50,7 @@ that the scheduling framework exposes.
51
50
One plugin may implement multiple interfaces to perform more complex or
52
51
stateful tasks.
53
52
54
- Some interfaces match the scheduler extension points which can be configured through
53
+ Some interfaces match the scheduler extension points which can be configured through
55
54
[ Scheduler Configuration] ( /docs/reference/scheduling/config/#extension-points ) .
56
55
57
56
{{< figure src="/images/docs/scheduling-framework-extensions.png" title="Scheduling framework extension points" class="diagram-large">}}
@@ -69,17 +68,17 @@ For more details about how internal scheduler queues work, read
69
68
70
69
### EnqueueExtension
71
70
72
- EnqueueExtension is the interface where the plugin can control
71
+ EnqueueExtension is the interface where the plugin can control
73
72
whether to retry scheduling of Pods rejected by this plugin, based on changes in the cluster.
74
73
Plugins that implement PreEnqueue, PreFilter, Filter, Reserve or Permit should implement this interface.
75
74
76
- #### QueueingHint
75
+ ### QueueingHint
77
76
78
77
{{< feature-state for_k8s_version="v1.28" state="beta" >}}
79
78
80
- QueueingHint is a callback function for deciding whether a Pod can be requeued to the active queue or backoff queue.
79
+ QueueingHint is a callback function for deciding whether a Pod can be requeued to the active queue or backoff queue.
81
80
It's executed every time a certain kind of event or change happens in the cluster.
82
- When the QueueingHint finds that the event might make the Pod schedulable,
81
+ When the QueueingHint finds that the event might make the Pod schedulable,
83
82
the Pod is put into the active queue or the backoff queue
84
83
so that the scheduler will retry the scheduling of the Pod.
85
84
@@ -222,9 +221,9 @@ the three things:
222
221
223
222
{{< note >}}
224
223
While any plugin can access the list of "waiting" Pods and approve them
225
- (see [ ` FrameworkHandle ` ] ( https://git.k8s.io/enhancements/keps/sig-scheduling/624-scheduling-framework#frameworkhandle ) ), we expect only the permit
226
- plugins to approve binding of reserved Pods that are in "waiting" state. Once a Pod
227
- is approved, it is sent to the [ PreBind] ( #pre-bind ) phase.
224
+ (see [ ` FrameworkHandle ` ] ( https://git.k8s.io/enhancements/keps/sig-scheduling/624-scheduling-framework#frameworkhandle ) ),
225
+ we expect only the permit plugins to approve binding of reserved Pods that are in "waiting" state.
226
+ Once a Pod is approved, it is sent to the [ PreBind] ( #pre-bind ) phase.
228
227
{{< /note >}}
229
228
230
229
### PreBind {#pre-bind}
@@ -288,4 +287,3 @@ plugins and get them configured along with default plugins. You can visit
288
287
If you are using Kubernetes v1.18 or later, you can configure a set of plugins as
289
288
a scheduler profile and then define multiple profiles to fit various kinds of workload.
290
289
Learn more at [ multiple profiles] ( /docs/reference/scheduling/config/#multiple-profiles ) .
291
-
0 commit comments