-
Notifications
You must be signed in to change notification settings - Fork 40.2k
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
Deprecate "containerized kubelet" #74148
Comments
We discussed this at today's SIG Node meeting. SIG Node agreed to deprecate "containerized kubelet" with the following action items:
|
will do thanks @dchen1107 |
/sig storage |
cc @timothysc @luxas @roberthbailey @kubernetes/sig-cluster-lifecycle |
@dims Does this deprecate |
@andrewrynhard it doesn't. the main thing to go would be this flag, if you are not using it, you are good. [1] bcf6d39 |
What is the reason behind this decision? We are heavily using containerized Would that mean that we no longer can run kubelet in a container? |
If so, you have about a 3 releases per our deprecation policies to switch over to some other way of running kubelet. RedHat/CoreOS folks who initially championed this approach have given up on it, there are no test suites, no owners. sig-storage is having a hard time trying to keep things working. So please ping the CoreOS folks to research for an alternative for the future. Note that |
Is it necessary to remove/deprecate the feature or just disable the flaky CI check? I find that feature and running kubelet in container helpful. Briefly looking at the implementation there is at least unit test suit. |
@tnozicka that's the tip of the ice berg, there's a lot more things that can be simplified when we drop this feature, example see #68513 Another example of what we had to go through is here - #63143 There is no appetite to continue taking on this burden. I'll let @derekwaynecarr @jsafrane @saad-ali and others chime in on the undue cost of keeping this alive. |
fwiw I don't think we should deprecate the entire use case b/c it's highly valuable for testing. I'm not certain why this matters for the kubelet, b/c it really shouldn't unless it's a design flaw. |
@saad-ali @msau42 @jsafrane @derekwaynecarr can you please chime in with the ongoing cost of supporting this feature? how much effort is to keep it going? |
Yes
we use this list of volume:
This seems to work pretty nice for us and we don't have any volume issues so far. |
Maintenance of containerized kubelet is increasingly painful. Kubelet / its storage code must know about all mounts on the host, resolve symlinks on the host, execute various helpers on the host and similar stuff, which is especially hard when it does not actually run on the host but in a weird container. See https://github.com/kubernetes/kubernetes/blob/master/pkg/util/mount/nsenter_mount.go and https://github.com/kubernetes/utils/blob/master/nsenter/nsenter.go for all the hacks we use. They are brittle and tend to break in very unexpected way. It's also largely undocumented and various ways how to run kubelet in a container are cargo-culted around. See above, |
Not only is the code complex, but it is also not tested, so we have had to rely on manual testing when making bug fixes, and we don't know about regressions until after the release when users report issues. sig-storage has tried for 6+ months to find an owner that can dedicate resources to support and maintain this environment, but nobody has stepped up. |
Just because I like causing trouble, another alternative is to run I think this keeps the kubelet lifecycle management benefits of running the kubelet binary from a container and allows the storage folks to just do regular filesystem operations, like there was nothing clever going on. |
The function needs ownership from both SIG Node and SIG Storage. There were attempts early in the project to remove containerized kubelet support, but Red Hat offered contributors to maintain this model in both SIGs for ~11 releases of Kubernetes. Kubernetes was much smaller 11 releases ago and our shared project experience was limited. It's one thing for a feature to work initially, and another thing to reason about the impact of alternative deployment models when dealing with CVE responses or just doing normal maintainer review of incoming PRs or feature function. That lived experience is informing our future choices at Red Hat to focus on just deploying kubelet as systemd unit (like many other Kubernetes service providers), but if there are others in the community that want to keep the function alive and maintain it we need owners to volunteer and commit to fix issues and add much needed tests. If not, it seems the responsible thing for the community is to clearly deprecate it. |
I like this suggestion to simplify the mechanism while retaining the packaging and runtime benefits of the container image. @andrewrynhard, I'm curious what we're doing in talos if we're not using the |
I kind of like the idea of mounting |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle stale |
There was a previous attempt : #43708
We have open issues that is not being worked on:
I think it's time to delete the CI jobs and start the deprecation cycle.
/sig node
/assign @derekwaynecarr
The text was updated successfully, but these errors were encountered: