Hi all,
This discussion started in the context of KEP-2625 [1] graduating to beta; it was discussed on 20210922 on SIG Arch Production Readiness subproject group and it was suggested to be moved in this forum.
The questions boils down to:
When adding new fields to a Beta/stable kubelet API, should each new field be guarded by its own feature gate?
Can we make sure that the new API fields have the proper graduation process while avoiding the need to add a new feature gate for every new API field? Managing so many and so granular feature gates is cumbersome for both developers and cluster operators.
Some context: KEP-2625 [1] wants to add cpumanager policy options. The cpumanager policy options:
Will behave like new API flags:
"[the value of cpuManagerPolicyOption is] A set of key=value CPU Manager policy options to use, to fine tune their behaviour. If not supplied, keep the default behaviour."
Affects only the kubelet configuration
Are meant to set by cluster admin
Are meant to be composable, meaning you can have any combination of them.
We added the infrastructure supporting them and the first policy option in 1.22. In 1.23, we are starting to add more [3]. We expect to add more in the near future.
Possible approaches:
Creating a feature gate per policy option.
This aligns with the current process of any new feature introduced and the well known graduation process.
However, this can be cumbersome from sys admin's perspective as they would have to configure a feature gate in addition to the policy config in the Kubelet config. Furthermore, extra burden is needed to track feature gates and the maturity level of each cpumanager option.
Introducing feature gates gating groups of policy options.
It was proposed to add CPUManagerPolicyExperimentalOptions that would be gating all the experimental options.
This way, we gate groups of cpumanager options per their maturity level.
This means anyone who wants to experiment with the newly introduced policy options would have to enable only one feature gate i.e. CPUManagerPolicyExperimentalOptions to gain access to experimental policy options. Individual policy options must still be explicitly enabled in the configuration.
[1] CPU Manager Policy Options with a policy option full-pcpus-only to reject non SMT-aligned workload (KEP, k/k PR)
[2] KEP-2625: Update CPU Manager Policy Options 1.23 Beta #2933
Kind Regards
Swati Sehgal and Francesco Romani,
Red Hat
--
You received this message because you are subscribed to the Google Groups "kubernetes-sig-architecture" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-arch...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CALXDz51O_G_Hi_Qbjr7q2RqE90WkJcaNG4bE%3D_QCuU3z92wmsg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAC_Rkjw4WNnS3iXKr%3DXy3AA6n9vt6nvWtQLSY1U%2BQZa0yAdR%3Dg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAHROWxSHNcgz%2BY7ZrfALLvzt-wy4Zpo1EGMw%3DVOTPjvOnoY2jg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAFS1MjK4U9VA9k06d9td7PxwXs-7YJ9COr1kTT8xkJLx2c2_%2BA%40mail.gmail.com.
Thanks everyone for chiming in on this.Adding `CPUManagerPolicyBetaOptions` to provide the ability to disable Beta options seems reasonable to me. Given the feature gate name: `CPUManagerPolicyBetaOptions`, I was thinking it would probably more appropriate to change `CPUManagerExperimentalPolicyOptions` to `CPUManagerPolicyAlphaOptions`. It would align with the known behaviour of alpha and beta features and avoid potential confusion.What do you think?Regards,Swati
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/CAHROWxTjuk8weByuo4VYEf_rbwHMoqH%3Dkopsg7JOAS3c8ba8tw%40mail.gmail.com.
These aren’t arbitrary feature gates, but rather sets of valid options. These options only go into effect if used. Additionally, IIRC these are kubelet flag options, so not open to the general user. The feature gate here is really more of a positive acknowledgment by the admin that they know they are using an alpha or beta feature.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-architecture/74661a59-e787-4ddd-8d71-de9d47a18094n%40googlegroups.com.
I'm wondering how the following scenario would play out with aggregated gates:
* if there's some beta CPU manager feature, to start using it, I would have to enable all beta CPU Manager features
* If some other CPU manager feature is later promoted to beta and is problematic for some reason, the only way I can disable it may be to disable all beta CPU manager features, including the one I was already successfully using and is maybe disruptive to disable?