Skip to content

Commit 12bdb8f

Browse files
authored
Merge pull request #44045 from windsonsea/workyh
Update scheduling framework concept
2 parents b50ab5b + ca9f211 commit 12bdb8f

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

content/en/docs/concepts/scheduling-eviction/scheduling-framework.md

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,27 @@ weight: 60
1010

1111
{{< feature-state for_k8s_version="v1.19" state="stable" >}}
1212

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.
1819

1920
[kep]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/624-scheduling-framework/README.md
2021

21-
22-
2322
<!-- body -->
2423

25-
# Framework workflow
24+
## Framework workflow
2625

2726
The Scheduling Framework defines a few extension points. Scheduler plugins
2827
register to be invoked at one or more extension points. Some of these plugins
2928
can change the scheduling decisions and some are informational only.
3029

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**.
3332

34-
## Scheduling Cycle & Binding Cycle
33+
### Scheduling cycle & binding cycle
3534

3635
The scheduling cycle selects a node for the Pod, and the binding cycle applies
3736
that decision to the cluster. Together, a scheduling cycle and binding cycle are
@@ -51,7 +50,7 @@ that the scheduling framework exposes.
5150
One plugin may implement multiple interfaces to perform more complex or
5251
stateful tasks.
5352

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
5554
[Scheduler Configuration](/docs/reference/scheduling/config/#extension-points).
5655

5756
{{< 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
6968

7069
### EnqueueExtension
7170

72-
EnqueueExtension is the interface where the plugin can control
71+
EnqueueExtension is the interface where the plugin can control
7372
whether to retry scheduling of Pods rejected by this plugin, based on changes in the cluster.
7473
Plugins that implement PreEnqueue, PreFilter, Filter, Reserve or Permit should implement this interface.
7574

76-
#### QueueingHint
75+
### QueueingHint
7776

7877
{{< feature-state for_k8s_version="v1.28" state="beta" >}}
7978

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.
8180
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,
8382
the Pod is put into the active queue or the backoff queue
8483
so that the scheduler will retry the scheduling of the Pod.
8584

@@ -222,9 +221,9 @@ the three things:
222221

223222
{{< note >}}
224223
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.
228227
{{< /note >}}
229228

230229
### PreBind {#pre-bind}
@@ -288,4 +287,3 @@ plugins and get them configured along with default plugins. You can visit
288287
If you are using Kubernetes v1.18 or later, you can configure a set of plugins as
289288
a scheduler profile and then define multiple profiles to fit various kinds of workload.
290289
Learn more at [multiple profiles](/docs/reference/scheduling/config/#multiple-profiles).
291-

0 commit comments

Comments
 (0)