-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce compatibility version for Kubernetes control-plane upgrades #4330
Comments
/sig api-machinery |
/sig architecture |
/milestone 1.30 |
@jpbetz: You must be a member of the kubernetes/milestone-maintainers GitHub team to set the milestone. If you believe you should be able to issue the /milestone command, please contact your Milestone Maintainers Team and have them propose you as an additional delegate for this responsibility. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
We won't need to do this manually forever. Long term kubernetes/enhancements#4330 will set it. But for now we bump it for each release.
/milestone v1.30 |
/lead-opted-in |
/label lead-opted-in |
Hello @logicalhan 👋, Enhancements team here. Just checking in as we approach enhancements freeze today ([02:00 UTC Friday 9th February 2024 / 18:00 PDT Thursday 8th February 2024](https://everytimezone.com/s/1ade3dca)):. This enhancement is targeting for stage Here's where this enhancement currently stands:
The status of this enhancement is marked as |
Hello 👋, v1.30 Enhancements team here. Unfortunately, this enhancement did not meet requirements for enhancements freeze. If you still wish to progress this enhancement in {current release}, please file an exception request. Thanks!
|
/milestone clear |
@jpbetz Please make sure that #4502 is being merged and also consider filing an exception request. |
#4502 is merged. Do we need a full exception for a clerical error like this? |
I have a suggestion for the title of this KEP. How about "Backwards compatibility for Kubernetes control-plane"? That's the feature we'd be adding. |
q: what would be the k8s project stance if the user wishes to emulate a version of k8s that is out of support? with this proposal going to beta (n-3) the scenario becomes possible. for example, 1.35 is supported for 3 releases, but 1.36 can emulate 1.35 for two more releases before 1.36 going out of support, and finally 1.37 can emulate 1.35 for one additional release before 1.37 going out of support. this results in the possibility of a user staying on 1.35 for 2 years / 6 releases, thinking they might be on a supported release. |
I don't think emulate means fully support that version or fully emulate that version, it means enable the codepaths that were running on that version in current version, but there is a lot of other code that changed completely, so support as a "fully supported version" is unrealistic |
Should the user be made aware of being out of support when they ask to emulate a release that is too old? |
Kubernetes code doesn't (currently) know support EOL dates. |
There are already internal mechanical bounds on the versions that can be requested to be emulated. We would not change the behavior of 1.32 emulating 1.31 when 1.31 reaches EOL... the 1.32 binaries would continue to function exactly the same way when asked to emulate 1.31 |
Seems like support status should follow the binary version rather than the compatibility version, if not then then the flexibility of this feature will be pretty limited. |
Yes, that is how this works |
Hello, I found a problem k3s-io/k3s#11853 related to this feature. In K3S, feature-gate of control components cannot be applied normally. The possible cause is that the Emm, can someone help? |
these global vars do seem problematic for the 'binary smashing' that k3s is doing. if you have a pr in mind you could send it. i think there is also potential for other concurrency issues. |
I just have an immature idea, can we separate this global var by Component? |
deferring to @siyuanfoundation |
Yes, it is possible to separate this global var by Component. But that would require touching a lot of code because all places uses the global We are working on a fix of not resetting the feature values if |
Sorry, let me describe my understanding and let me know if it is correct. The premise of this fix is that different components do not have the same flag. But different components will actually have the same flags (v, feature-gates, metric...), which still conflicts, right? |
With the fix in kubernetes/kubernetes#130079, different components can have the same flag, as long they do not conflict with each other, for example setting |
I found a new issue that were not addressed in that fix: In the current K3S, the controller and scheduler are launched with goroutine almost at the same time. They will all parse their flag |
The code inside kubernetes/kubernetes structures these commands as separate binaries, as we test and release. If k3s is reworking them into a single binary, working through the assumptions that breaks and keeping up with new assumptions that breaks is the responsibility of the k3s implementation (in this case, something simple like a synchronization point between those goroutine commands after parsing flags and after setting global feature gates might be sufficient for k3s) We won't try to do things that cause issues in a rework like k3s has done, but we can't reasonably support or block on issues caused by out-of-tree significant restructurings of the implementation either. |
Yes, I'm trying to work with k3s. Thanks for your suggestion. |
Enhancement Description
Introduce
compatibility version
in Kubernetes components to enhance Kubernetes control-plane upgrades. See safer Kubernetes upgrades for more details.Kubernetes Enhancement Proposal: https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/4330-compatibility-versions
Primary contact (assignee): @logicalhan, @jpbetz, @liggitt
Responsible SIGs: SIG api-machinery
Enhancement target (which target equals to which milestone):
Alpha
k/enhancements
) update PR(s): KEP-4330: Compatibility versions #4395k/k
) update PR(s):k/website
) update PR(s):Please keep this description up to date. This will help the Enhancement Team to track the evolution of the enhancement efficiently.
The text was updated successfully, but these errors were encountered: