46
46
## Summary
47
47
48
48
The kube-scheduler configuration API ` kubescheduler.config.k8s.io ` was in alpha
49
- for several releases. We graduated it to beta in 1.19 as ` v1beta1 ` . In 1.22,
50
- we introduced ` v1beta2 ` .
49
+ for several releases. We graduated it to beta in 1.19 as ` v1beta1 ` . We introduced
50
+ ` v1beta2 ` and ` v1beta3 ` in 1.22 and 1.23 respectively .
51
51
52
52
## Motivation
53
53
70
70
71
71
- Introduce ` kubescheduler.config.k8s.io/v1beta1 ` as a copy of
72
72
` kubescheduler.config.k8s.io/v1alpha2 ` with minimal cleanup changes.
73
- - Iterate the API in ` kubescheduler.config.k8s.io/v1beta2 ` , based on learnings.
73
+ - Iterate the API in ` kubescheduler.config.k8s.io/v1beta2 ` , ` kubescheduler.config.k8s.io/v1beta3 ` based on learnings.
74
74
- Use the newly created API objects to build the default configuration for kube-scheduler.
75
75
76
76
### Non-Goals
@@ -97,6 +97,15 @@ The second iteration, `kubescheduler.config.k8s.io/v1beta2`, includes the follow
97
97
- ` RequestedToCapacityRatio ` (in favor of ` NodeResourcesFit ` plugin with a ` RequestedToCapacityRatio ` scoring strategy)
98
98
- Cleanup of validation hacks.
99
99
100
+ The third iteration, ` kubescheduler.config.k8s.io/v1beta3 ` , includes the following changes:
101
+ - Change the weight of plugins that can be influenced by end users through the Pod specs.
102
+ - ` InterPodAffinity ` to 2
103
+ - ` NodeAffinity ` to 2
104
+ - ` TaintToleration ` to 3 as leveraging node tainting to group nodes in the cluster is becoming a widely-adopted practice
105
+
106
+ The main reason is that some plugins have "default" behavior without needing user inputs, whereas the above plugins are
107
+ about user preferences, so should have more influence while making scheduling decisions.
108
+ More information on the discussion can be found [ here] ( https://github.com/kubernetes/kubernetes/issues/88174 ) .
100
109
### Risks and Mitigations
101
110
102
111
The major risk is around the removal of the ` unreserve ` extension point.
@@ -121,6 +130,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
121
130
- [x] Tests for ` RequestedToCapacityRatioArgs ` that: (1) fail to pass with
122
131
bad casing and (2) get encoded with lower case.
123
132
- [x] Tests for parsing, conversion, defaulting and validation.
133
+ - [ ] Tests which assert predictability of node assignment with increased weights.
124
134
125
135
### Graduation Criteria
126
136
@@ -136,7 +146,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
136
146
137
147
### Upgrade/Downgrade Strategy
138
148
139
- Users are able to use the ` v1beta1 ` or ` v1beta2 ` APIs . Since they only affect
149
+ Users are able to use the ` v1beta1 ` , ` v1beta2 ` or ` v1beta3 ` API . Since they only affect
140
150
the configuration of the scheduler, there is no impact to running workloads.
141
151
142
152
The default configurations preserve the behavior of the scheduler.
172
182
173
183
The e2e framework does not currently support changing configuration files.
174
184
175
- There are intensive unit tests for both API versions.
185
+ There are intensive unit tests for all the API versions.
176
186
177
187
### Rollout, Upgrade and Rollback Planning
178
188
203
213
- Some plugins are disabled. They continue to work in ` v1beta1 ` ; if used,
204
214
kube-scheduler logs a Warning.
205
215
216
+ When ` v1beta3 ` gets introduced:
217
+ - No changes to plugins enabled by default. Only their weights would change.
218
+
206
219
### Monitoring requirements
207
220
208
221
* ** How can an operator determine if the feature is in use by workloads?**
283
296
- 2020-05-08: KEP for beta graduation sent for review, including motivation,
284
297
proposal, risks, test plan and graduation criteria.
285
298
- 2020-05-13: KEP updated to remove v1alpha2 support.
286
- - 2021-07-08: Introducing ` v1beta2 `
299
+ - 2021-07-08: Introducing ` v1beta2 `
300
+ - 2021-08-06: Introducing ` v1beta3 `
0 commit comments