Document the changes of scheduler PostFilter extension point

This commit is contained in:
Wei Huang
2020-07-08 12:44:26 -07:00
parent d6b7bf5f38
commit e2fd28a35b
4 changed files with 24 additions and 16 deletions
@@ -65,24 +65,20 @@ PriorityClasses have the option to set `preemptionPolicy: Never`.
This will prevent pods of that PriorityClass from preempting other pods.
{{< /note >}}
Preemption is controlled by a kube-scheduler flag `disablePreemption`, which is
set to `false` by default.
If you want to disable preemption despite the above note, you can set
`disablePreemption` to `true`.
This option is available in component configs only and is not available in
old-style command line options. Below is a sample component config to disable
preemption:
Starting from Kubernetes 1.19, Preemption is controlled by a kube-scheduler
plugin: `DefaultPreemption`, which is enabled by default.
If you want to disable preemption despite the above note, below is a sample
component config:
```yaml
apiVersion: kubescheduler.config.k8s.io/v1alpha1
apiVersion: kubescheduler.config.k8s.io/v1beta1
kind: KubeSchedulerConfiguration
algorithmSource:
provider: DefaultProvider
...
disablePreemption: true
profiles:
- schedulerName: default-scheduler
plugins:
postFilter:
disabled:
- name: DefaultPreemption
```
## PriorityClass
@@ -75,6 +75,14 @@ node, the scheduler will call filter plugins in their configured order. If any
filter plugin marks the node as infeasible, the remaining plugins will not be
called for that node. Nodes may be evaluated concurrently.
### PostFilter {#post-filter}
These plugins are called after Filter phase, but only when there is no feasible
node. Each plugin is called by their configured order. If any postFilter plugin
marks the node as `Schedulable`, the remaining plugins will not be called.
A typical PostFilter implementation is preemption, which tries to make the pod
schedulable by preempting other Pods.
### PreScore {#pre-score}
These plugins are used to perform "pre-scoring" work, which generates a sharable
@@ -158,6 +158,8 @@ extension points:
Extension points: `QueueSort`.
- `DefaultBinder`: Provides the default binding mechanism.
Extension points: `Bind`.
- `DefaultPreemption`: Provides the default preemption mechanism.
Extension points: `PostFilter`.
You can also enable the following plugins, through the component config APIs,
that are not enabled by default:
@@ -199,7 +201,7 @@ profiles:
- schedulerName: default-scheduler
- schedulerName: no-scoring-scheduler
plugins:
prescore:
preScore:
disabled:
- name: '*'
score:
@@ -245,6 +247,8 @@ beware of the following changes, if applicable:
- `DefaultPodTopologySpread` [plugin](#scheduling-plugins) is renamed to `SelectorSpread`.
- `Unreserve` extension point is removed from Profile definition. All `Reserve`
plugins implement an `Unreserve` call.
- `.disablePreemption` was removed. Users can disable preemption by disabling the
"DefaultPreemption" PostFilter plugin.
## {{% heading "whatsnext" %}}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 59 KiB