Skip to content

Commit 54538a4

Browse files
committed
KEP-2625: Updates pertaining to CPUManagerPolicyExperimentalOptions feature gate
Signed-off-by: Swati Sehgal <[email protected]>
1 parent 45cb658 commit 54538a4

File tree

2 files changed

+36
-10
lines changed

2 files changed

+36
-10
lines changed

keps/sig-node/2625-cpumanager-policies-thread-placement/README.md

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
- [Alpha](#alpha)
2828
- [Alpha to Beta Graduation](#alpha-to-beta-graduation)
2929
- [Beta to G.A Graduation](#beta-to-ga-graduation)
30+
- [Graduation Criteria of Options](#graduation-criteria-of-options)
31+
- [Graduation of Options to <code>Beta-quality</code> (non-hidden)](#graduation-of-options-to--non-hidden)
32+
- [Graduation of Options from <code>Beta-quality</code> to <code>G.A-quality</code>](#graduation-of-options-from--to-)
3033
- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy)
3134
- [Version Skew Strategy](#version-skew-strategy)
3235
- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire)
@@ -49,7 +52,7 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
4952
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
5053
- [X] (R) Graduation criteria is in place
5154
- [X] (R) Production readiness review completed
52-
- [ ] Production readiness review approved
55+
- [X] Production readiness review approved
5356
- [X] "Implementation History" section is up-to-date for milestone
5457
- ~~ [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io] ~~
5558
- [X] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
@@ -274,6 +277,24 @@ The [implementation PR](https://github.com/kubernetes/kubernetes/pull/101432) wi
274277
- [X] Allowing time for feedback (1 year).
275278
- [X] Risks have been addressed.
276279

280+
### Graduation Criteria of Options
281+
282+
In 1.23 release, as we are graduating this feature to Beta meaning `CPUManagerPolicyOptions` is enabled by default allowing the user to configure CPU Manager static policy with the option `full-pcpus-only`.
283+
NOTE: Even though the feature gate is enabled by default the user still has to explicitly use the Kubelet flag called `CPUManagerPolicyOptions` in the kubelet config or command line argument called `cpumanager-policy-options` along with a specific policy option to use this feature.
284+
- In addition to this, in order to not have all alpha-quality experimental options introduced in the future available by default, we are introducing an additional feature gate called `CPUManagerPolicyExperimentalOptions` that controls all the experimental options. The experimental options are hidden by default and only if the feature gate is enabled the user has the ability to use the experimental options. Based on the graduation criteria described below, a policy option can move from being hidden to being non-hidden. Once the feature is non-hidden the user would not need to use `CPUManagerPolicyExperimentalOptions` feature gate in order to use that option.
285+
- Since the feature that allows the ability to customize the behaviour of CPUManager static policy as well as the CPUManager Policy option `full-pcpus-only` were both introduced in 1.22 release and meet the above graduation criterion, `full-pcpus-only` would be considered as a non-hidden option i.e. available to be used when explicitly used along with `CPUManagerPolicyOptions` Kubelet flag in the kubelet config or command line argument called `cpumanager-policy-options` .
286+
- The introduction of this new feature gate gives us the ability to move the feature to beta and later stable without implying all that the options are beta or stable.
287+
288+
The graduation Criteria of options is described below:
289+
290+
#### Graduation of Options to `Beta-quality` (non-hidden)
291+
- [X] Gather feedback from the consumer of the policy option.
292+
- [X] No major bugs reported in the previous cycle.
293+
294+
#### Graduation of Options from `Beta-quality` to `G.A-quality`
295+
- [X] Allowing time for feedback (1 year) on the policy option.
296+
- [X] Risks have been addressed.
297+
277298
### Upgrade / Downgrade Strategy
278299

279300
We expect no impact. The new policies are opt-in and separated by the existing ones.
@@ -288,17 +309,19 @@ No changes needed
288309
* **How can this feature be enabled / disabled in a live cluster?**
289310
- [X] Feature gate (also fill in values in `kep.yaml`).
290311
- Feature gate name: `CPUManagerPolicyOptions`.
312+
- Feature gate name: `CPUManagerPolicyExperimentalOptions`.
291313
- Components depending on the feature gate: kubelet
292-
- [X] Change the kubelet configuration to set the CPUManager policy to `configurable`
293-
- [X] Change the kubelet configuration adding the CPUManager policy option to `reject-non-smt-aligned`
314+
- [X] Change the kubelet configuration adding the CPUManager policy option to `full-pcpus-only`
294315
* **Does enabling the feature change any default behavior?**
295-
- Yes, it makes the behaviour of the CPUManager static policy more restrictive and can lead to pod admission rejection.
316+
- Enabling the `CPUManagerPolicyOptions` makes the behaviour of the CPUManager static policy more restrictive and can lead to pod admission rejection.
317+
- Enabling the `CPUManagerPolicyExperimentalOptions` provides the ability to use experimental options which depending on the option can change the behaviour of the CPUManager static policy.
296318
* **Can the feature be disabled once it has been enabled (i.e. can we rollback the enablement)?**
297-
- Yes, disabling the feature gate shuts down the feature completely; alternatively,
298-
- Yes, through kubelet configuration - switch to a different policy.
319+
- Yes, disabling the `CPUManagerPolicyOptions` feature gate shuts down the feature completely; alternatively through kubelet configuration - switch to a different policy.
320+
- Also, disabling `CPUManagerPolicyExperimentalOptions` feature gate disables the use of experimental options and the behavior would depend on how `CPUManagerPolicyOptions` feature gate is configured.
321+
- Disabling both the feature gates would allow complete rollback of this enablement.
299322
* **What happens if we reenable the feature if it was previously rolled back?** No changes. Existing container will not see their allocation changed. New containers will.
300323
* **Are there any tests for feature enablement/disablement?**
301-
- A specific e2e test will demonstrate that the default behaviour is preserved when the feature gate is disabled, or when the feature is not used (2 separate tests)
324+
- A specific e2e test will demonstrate that the default behaviour is preserved when the `CPUManagerPolicyOptions` feature gate is disabled, or when the feature is not used (2 separate tests)
302325

303326
### Rollout, Upgrade and Rollback Planning
304327

@@ -310,7 +333,7 @@ No changes needed
310333

311334
### Monitoring requirements
312335
* **How can an operator determine if the feature is in use by workloads?**
313-
- Inspect the kubelet configuration of the nodes: check feature gate and usage of the new option
336+
- Inspect the kubelet configuration of the nodes: check feature gates and usage of the new options
314337
* **What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service?**
315338
- No change
316339
* **What are the reasonable SLOs (Service Level Objectives) for the above SLIs?** N/A.
@@ -351,3 +374,4 @@ No changes needed
351374
- 2021-05-11: KEP update to add to the `configurable` alias and address review comments
352375
- 2021-05-13: KEP update to postpone the `configurable` alias, per review comments
353376
- 2021-09-02: KEP update to capture the policy name `full-pcpus-only` based on the implementation merged in 1.22, explain how this feature is being used for introduction of another policy option and updates pertaining to promotion of the feature to Beta.
377+
- 2021-09-08: KEP update to introduce `CPUManagerPolicyExperimentalOptions` feature gate to prevent alpha-quality options from being non-hidden (available) by default and explain the graduation criteria of the options.

keps/sig-node/2625-cpumanager-policies-thread-placement/kep.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ owning-sig: sig-node
77
participating-sigs: []
88
status: implementable
99
creation-date: "2021-04-14"
10-
last-updated: "2021-09-02"
10+
last-updated: "2021-09-08"
1111
reviewers:
1212
- "@klueska"
1313
approvers:
1414
- "@sig-node-leads"
1515
prr-approvers:
1616
- "@johnbelamaric"
17-
see-also: []
17+
see-also:
18+
- "keps/sig-node/2902-cpumanager-distribute-cpus-policy-option/"
1819
replaces: []
1920

2021
# The target maturity stage in the current dev cycle for this KEP.
@@ -35,6 +36,7 @@ milestone:
3536
# List the feature gate name and the components for which it must be enabled
3637
feature-gates:
3738
- name: "CPUManagerPolicyOptions"
39+
- name: "CPUManagerPolicyExperimentalOptions"
3840
components:
3941
- kubelet
4042
disable-supported: true

0 commit comments

Comments
 (0)