8
8
- [ Non-Goals] ( #non-goals )
9
9
- [ Proposal] ( #proposal )
10
10
- [ Risks and Mitigations] ( #risks-and-mitigations )
11
+ - [ Design Details] ( #design-details )
11
12
- [ Test Plan] ( #test-plan )
12
13
- [ Graduation Criteria] ( #graduation-criteria )
13
14
- [ Alpha -> ; Beta Graduation] ( #alpha---beta-graduation )
15
+ - [ Beta -> ; GA Graduation] ( #beta---ga-graduation )
16
+ - [ Upgrade/Downgrade Strategy] ( #upgradedowngrade-strategy )
17
+ - [ Version Skew Strategy] ( #version-skew-strategy )
14
18
- [ Production Readiness Review Questionnaire] ( #production-readiness-review-questionnaire )
15
19
- [ Feature enablement and rollback] ( #feature-enablement-and-rollback )
16
20
- [ Rollout, Upgrade and Rollback Planning] ( #rollout-upgrade-and-rollback-planning )
29
33
- [x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
30
34
- [x] (R) Graduation criteria is in place
31
35
- [x] (R) Production readiness review completed
32
- - [ ] Production readiness review approved
33
- - [ ] "Implementation History" section is up-to-date for milestone
36
+ - [x ] Production readiness review approved
37
+ - [x ] "Implementation History" section is up-to-date for milestone
34
38
- [ ] User-facing documentation has been created in [ kubernetes/website] , for publication to [ kubernetes.io]
35
39
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
36
40
41
45
42
46
## Summary
43
47
44
- The kube-scheduler configuration API ` kubescheduler.config.k8s.io ` is currently
45
- in version ` v1alpha2 ` . We propose its graduation to ` v1beta1 ` in order to
46
- promote its wider use .
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 ` .
47
51
48
52
## Motivation
49
53
66
70
67
71
- Introduce ` kubescheduler.config.k8s.io/v1beta1 ` as a copy of
68
72
` kubescheduler.config.k8s.io/v1alpha2 ` with minimal cleanup changes.
73
+ - Iterate the API in ` kubescheduler.config.k8s.io/v1beta2 ` , based on learnings.
69
74
- Use the newly created API objects to build the default configuration for kube-scheduler.
70
- - Remove support for ` kubescheduler.config.k8s.io/v1alpha2 `
71
75
72
76
### Non-Goals
73
77
@@ -82,6 +86,16 @@ For the most part, `kubescheduler.config.k8s.io/v1beta1` will be a copy of
82
86
- [ ] ` .profiles[*].plugins.unreserve ` will be removed.
83
87
- [ ] Embedded types of ` RequestedToCapacityRatio ` will include missing json tags
84
88
and will be decoded with a case-sensitive decoder.
89
+
90
+ The second iteration, ` kubescheduler.config.k8s.io/v1beta2 ` , includes the following changes:
91
+ - Plugin removals:
92
+ - ` NodeLabel ` (in favor of ` NodeAffinity ` )
93
+ - ` ServiceAffinity ` (in favor of ` NodeAffinity ` )
94
+ - ` NodePreferAvoidPods ` (in favor of ` TaintToleration ` )
95
+ - ` NodeResourcesLeastAllocated ` (in favor of ` NodeResourcesFit ` plugin with a ` LeastAllocated ` scoring strategy)
96
+ - ` NodeResourcesMostAllocated ` (in favor of ` NodeResourcesFit ` plugin with a ` MostAllocated ` scoring strategy)
97
+ - ` RequestedToCapacityRatio ` (in favor of ` NodeResourcesFit ` plugin with a ` RequestedToCapacityRatio ` scoring strategy)
98
+ - Cleanup of validation hacks.
85
99
86
100
### Risks and Mitigations
87
101
@@ -98,12 +112,15 @@ updated to comply with the modified `Reserve` interface, otherwise scheduler
98
112
startup will fail. Plugins can choose to provide empty implementations.
99
113
This will be documented in https://kubernetes.io/docs/reference/scheduling/profiles/
100
114
115
+ ## Design Details
116
+
101
117
### Test Plan
102
118
103
- - [ ] Compatibility tests for defaults and overrides of ` .bindTimeoutSeconds `
119
+ - [x ] Compatibility tests for defaults and overrides of ` .bindTimeoutSeconds `
104
120
in ` VolumeBindingArgs ` type.
105
- - [ ] Tests for ` RequestedToCapacityRatioArgs ` that: (1) fail to pass with
121
+ - [x ] Tests for ` RequestedToCapacityRatioArgs ` that: (1) fail to pass with
106
122
bad casing and (2) get encoded with lower case.
123
+ - [x] Tests for parsing, conversion, defaulting and validation.
107
124
108
125
### Graduation Criteria
109
126
@@ -112,6 +129,22 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
112
129
- Complete features listed in [ proposal] [ #proposal ] .
113
130
- Tests in [ test plan] ( #test-plan )
114
131
132
+ #### Beta -> GA Graduation
133
+
134
+ - Deprecation of legacy plugins.
135
+ - Minimal changes in the last beta iteration of the API.
136
+
137
+ ### Upgrade/Downgrade Strategy
138
+
139
+ Users are able to use the ` v1beta1 ` or ` v1beta2 ` APIs. Since they only affect
140
+ the configuration of the scheduler, there is no impact to running workloads.
141
+
142
+ The default configurations preserve the behavior of the scheduler.
143
+
144
+ ### Version Skew Strategy
145
+
146
+ N/A
147
+
115
148
## Production Readiness Review Questionnaire
116
149
117
150
### Feature enablement and rollback
@@ -129,7 +162,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
129
162
* ** Can the feature be disabled once it has been enabled (i.e. can we rollback
130
163
the enablement)?**
131
164
132
- By removing ` --config ` command line flag for ` kube-scheduler ` .
165
+ Yes, by removing ` --config ` command line flag for ` kube-scheduler ` .
133
166
134
167
* ** What happens if we reenable the feature if it was previously rolled back?**
135
168
@@ -138,6 +171,8 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
138
171
* ** Are there any tests for feature enablement/disablement?**
139
172
140
173
The e2e framework does not currently support changing configuration files.
174
+
175
+ There are intensive unit tests for both API versions.
141
176
142
177
### Rollout, Upgrade and Rollback Planning
143
178
@@ -148,7 +183,11 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
148
183
149
184
* ** What specific metrics should inform a rollback?**
150
185
151
- Metric "schedule_attempts_total" remaining at zero when new pods are added.
186
+ - Metric "schedule_attempts_total" remaining at zero when new pods are added.
187
+ - Latency changes in the metrics:
188
+ - ` e2e_scheduling_duration_seconds `
189
+ - ` scheduling_algorithm_duration_seconds `
190
+ - ` framework_extension_point_duration_seconds `
152
191
153
192
* ** Were upgrade and rollback tested? Was upgrade->downgrade->upgrade path tested?**
154
193
@@ -157,14 +196,23 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
157
196
* ** Is the rollout accompanied by any deprecations and/or removals of features,
158
197
APIs, fields of API types, flags, etc.?**
159
198
160
- Configuration API ` kubescheduler.config.k8s.io/v1alpha2 ` is removed.
199
+ When ` v1beta1 ` was introduced:
200
+ - Configuration API ` kubescheduler.config.k8s.io/v1alpha2 ` is removed.
201
+
202
+ When ` v1beta2 ` was introduced:
203
+ - Some plugins are disabled. They continue to work in ` v1beta1 ` ; if used,
204
+ kube-scheduler logs a Warning.
161
205
162
206
### Monitoring requirements
163
207
164
208
* ** How can an operator determine if the feature is in use by workloads?**
165
209
166
210
N/A.
167
211
212
+ * ** How can someone using this feature know that it is working for their instance?**
213
+
214
+ N/A.
215
+
168
216
* ** What are the SLIs (Service Level Indicators) an operator can use to
169
217
determine the health of the service?**
170
218
@@ -194,7 +242,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
194
242
195
243
* ** Will enabling / using this feature result in introducing new API types?**
196
244
197
- No.
245
+ No REST API changes .
198
246
199
247
* ** Will enabling / using this feature result in any new calls to cloud
200
248
provider?**
@@ -235,3 +283,4 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
235
283
- 2020-05-08: KEP for beta graduation sent for review, including motivation,
236
284
proposal, risks, test plan and graduation criteria.
237
285
- 2020-05-13: KEP updated to remove v1alpha2 support.
286
+ - 2021-07-08: Introducing ` v1beta2 `
0 commit comments