47
47
48
48
The kube-scheduler configuration API ` kubescheduler.config.k8s.io ` was in alpha
49
49
for several releases. We graduated it to beta in 1.19 as ` v1beta1 ` . In 1.22,
50
- we introduced ` v1beta2 ` .
50
+ we introduced ` v1beta2 ` . In 1.23, we plan to introduce ` v1beta3 `
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/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,14 @@ 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 weights of the following user configurable plugins.
102
+ - ` InterPodAffinity ` to 2
103
+ - ` NodeAffinity ` to 2
104
+ - ` TaintToleration ` to 3 as the usage of node tainting to group nodes in the cluster is increasing for many user workloads
105
+
106
+ The main reason for increasing the weights of the above plugins is conflict with other plugins like image locality, utilization.
107
+ More information can be found [ here] ( https://github.com/kubernetes/kubernetes/issues/88174 )
100
108
### Risks and Mitigations
101
109
102
110
The major risk is around the removal of the ` unreserve ` extension point.
@@ -121,6 +129,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
121
129
- [x] Tests for ` RequestedToCapacityRatioArgs ` that: (1) fail to pass with
122
130
bad casing and (2) get encoded with lower case.
123
131
- [x] Tests for parsing, conversion, defaulting and validation.
132
+ - [ ] Tests which assert predictability of node assignment with increased weights.
124
133
125
134
### Graduation Criteria
126
135
@@ -136,7 +145,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
136
145
137
146
### Upgrade/Downgrade Strategy
138
147
139
- Users are able to use the ` v1beta1 ` or ` v1beta2 ` APIs. Since they only affect
148
+ Users are able to use the ` v1beta1 ` , ` v1beta2 ` , ` v1beta3 ` APIs. Since they only affect
140
149
the configuration of the scheduler, there is no impact to running workloads.
141
150
142
151
The default configurations preserve the behavior of the scheduler.
172
181
173
182
The e2e framework does not currently support changing configuration files.
174
183
175
- There are intensive unit tests for both API versions.
184
+ There are intensive unit tests for all the API versions.
176
185
177
186
### Rollout, Upgrade and Rollback Planning
178
187
203
212
- Some plugins are disabled. They continue to work in ` v1beta1 ` ; if used,
204
213
kube-scheduler logs a Warning.
205
214
215
+ When ` v1beta3 ` gets introduced:
216
+ - No changes to plugins enabled by default. Only their weights would change.
217
+
206
218
### Monitoring requirements
207
219
208
220
* ** How can an operator determine if the feature is in use by workloads?**
283
295
- 2020-05-08: KEP for beta graduation sent for review, including motivation,
284
296
proposal, risks, test plan and graduation criteria.
285
297
- 2020-05-13: KEP updated to remove v1alpha2 support.
286
- - 2021-07-08: Introducing ` v1beta2 `
298
+ - 2021-07-08: Introducing ` v1beta2 `
299
+ - 2021-08-06: Introducing ` v1beta3 `
0 commit comments