Skip to content

Commit e5e927a

Browse files
Update KEP for Scheduler CC in beta
Add notes for v1beta2 Signed-off-by: Aldo Culquicondor <[email protected]>
1 parent aff8aed commit e5e927a

File tree

3 files changed

+66
-14
lines changed

3 files changed

+66
-14
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kep-number: 785
2+
beta:
3+
approver: "@wojtek-t"

keps/sig-scheduling/785-scheduler-component-config-api/README.md

Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@
88
- [Non-Goals](#non-goals)
99
- [Proposal](#proposal)
1010
- [Risks and Mitigations](#risks-and-mitigations)
11+
- [Design Details](#design-details)
1112
- [Test Plan](#test-plan)
1213
- [Graduation Criteria](#graduation-criteria)
1314
- [Alpha -&gt; Beta Graduation](#alpha---beta-graduation)
15+
- [Beta -&gt; GA Graduation](#beta---ga-graduation)
16+
- [Upgrade/Downgrade Strategy](#upgradedowngrade-strategy)
17+
- [Version Skew Strategy](#version-skew-strategy)
1418
- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire)
1519
- [Feature enablement and rollback](#feature-enablement-and-rollback)
1620
- [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning)
@@ -29,8 +33,8 @@
2933
- [x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
3034
- [x] (R) Graduation criteria is in place
3135
- [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
3438
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
3539
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
3640

@@ -41,9 +45,9 @@
4145

4246
## Summary
4347

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`.
4751

4852
## Motivation
4953

@@ -66,8 +70,8 @@ usage.
6670

6771
- Introduce `kubescheduler.config.k8s.io/v1beta1` as a copy of
6872
`kubescheduler.config.k8s.io/v1alpha2` with minimal cleanup changes.
73+
- Iterate the API in `kubescheduler.config.k8s.io/v1beta2`, based on learnings.
6974
- Use the newly created API objects to build the default configuration for kube-scheduler.
70-
- Remove support for `kubescheduler.config.k8s.io/v1alpha2`
7175

7276
### Non-Goals
7377

@@ -82,6 +86,16 @@ For the most part, `kubescheduler.config.k8s.io/v1beta1` will be a copy of
8286
- [ ] `.profiles[*].plugins.unreserve` will be removed.
8387
- [ ] Embedded types of `RequestedToCapacityRatio` will include missing json tags
8488
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.
8599

86100
### Risks and Mitigations
87101

@@ -98,12 +112,15 @@ updated to comply with the modified `Reserve` interface, otherwise scheduler
98112
startup will fail. Plugins can choose to provide empty implementations.
99113
This will be documented in https://kubernetes.io/docs/reference/scheduling/profiles/
100114

115+
## Design Details
116+
101117
### Test Plan
102118

103-
- [ ] Compatibility tests for defaults and overrides of `.bindTimeoutSeconds`
119+
- [x] Compatibility tests for defaults and overrides of `.bindTimeoutSeconds`
104120
in `VolumeBindingArgs` type.
105-
- [ ] Tests for `RequestedToCapacityRatioArgs` that: (1) fail to pass with
121+
- [x] Tests for `RequestedToCapacityRatioArgs` that: (1) fail to pass with
106122
bad casing and (2) get encoded with lower case.
123+
- [x] Tests for parsing, conversion, defaulting and validation.
107124

108125
### Graduation Criteria
109126

@@ -112,6 +129,22 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
112129
- Complete features listed in [proposal][#proposal].
113130
- Tests in [test plan](#test-plan)
114131

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+
115148
## Production Readiness Review Questionnaire
116149

117150
### Feature enablement and rollback
@@ -129,7 +162,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
129162
* **Can the feature be disabled once it has been enabled (i.e. can we rollback
130163
the enablement)?**
131164

132-
By removing `--config` command line flag for `kube-scheduler`.
165+
Yes, by removing `--config` command line flag for `kube-scheduler`.
133166

134167
* **What happens if we reenable the feature if it was previously rolled back?**
135168

@@ -138,6 +171,8 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
138171
* **Are there any tests for feature enablement/disablement?**
139172

140173
The e2e framework does not currently support changing configuration files.
174+
175+
There are intensive unit tests for both API versions.
141176

142177
### Rollout, Upgrade and Rollback Planning
143178

@@ -148,7 +183,11 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
148183

149184
* **What specific metrics should inform a rollback?**
150185

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`
152191

153192
* **Were upgrade and rollback tested? Was upgrade->downgrade->upgrade path tested?**
154193

@@ -157,14 +196,23 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
157196
* **Is the rollout accompanied by any deprecations and/or removals of features,
158197
APIs, fields of API types, flags, etc.?**
159198

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.
161205

162206
### Monitoring requirements
163207

164208
* **How can an operator determine if the feature is in use by workloads?**
165209

166210
N/A.
167211

212+
* **How can someone using this feature know that it is working for their instance?**
213+
214+
N/A.
215+
168216
* **What are the SLIs (Service Level Indicators) an operator can use to
169217
determine the health of the service?**
170218

@@ -194,7 +242,7 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
194242

195243
* **Will enabling / using this feature result in introducing new API types?**
196244

197-
No.
245+
No REST API changes.
198246

199247
* **Will enabling / using this feature result in any new calls to cloud
200248
provider?**
@@ -235,3 +283,4 @@ This will be documented in https://kubernetes.io/docs/reference/scheduling/profi
235283
- 2020-05-08: KEP for beta graduation sent for review, including motivation,
236284
proposal, risks, test plan and graduation criteria.
237285
- 2020-05-13: KEP updated to remove v1alpha2 support.
286+
- 2021-07-08: Introducing `v1beta2`

keps/sig-scheduling/785-scheduler-component-config-api/kep.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ prr-approvers:
1616
- "@wojtek-t"
1717
see-also:
1818
- "/keps/sig-scheduling/1451-multi-scheduling-profiles"
19+
- "/keps/sig-scheduling/2458-node-resource-score-strategy"
1920
stage: beta
20-
latest-milestone: "v1.19"
21+
latest-milestone: "v1.22"
2122
milestone:
2223
beta: "v1.19"
23-
stable: "v1.22"

0 commit comments

Comments
 (0)