Document the changes of scheduler PostFilter extension point
This commit is contained in:
@@ -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 |
Reference in New Issue
Block a user