-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Ability to know what cgroup subsystems runc supports #1440
Comments
Do you know why it does the exists check after creation? |
@crosbymichael -- the kubelet uses runc libraries to create a cgroup hiearchy like the following:
There is a control loop that basically asks "does the kubepods cgroup exist, and if not, create it", and that control loop is confused by the presence of additional subsystems not known to runc. For now, I will probably just limit the exists check to a list of subsystems we care about, but it seemed generally useful for runc to report back the list of mountpoints it cares about as well rather than all. |
@derekwaynecarr do you know how the two are out of sync? If its the same code why are they reporting different things? |
a flow may help. kubelet launches, and checks if at a separate step in the code, the kubelet then tries to create the quality of service cgroups for I am basically trying to determine the most reliable path for verifying a cgroup exists once runc has applied it. For the moment, I have just filtered our exist checks to a set of supported subsystems, but it would be nice if runc had a function for this use case. |
Ok, I understand now. Thanks. Maybe its better to add an |
Automatic merge from submit-queue (batch tested with PRs 45515, 45579) Ignore openrc cgroup **What this PR does / why we need it**: It is a work-around for the following: opencontainers/runc#1440 **Special notes for your reviewer**: I am open to a cleaner way to do this, but we have many developer users on Macs that ran containerized kubelets that are not able to run them right now due to the inclusion of openrc tripping up our existence checks. Ideally, runc can give us a call to say "does this exist according to what runc knows about". Or we could add a whitelist check. Right now, this was the smallest hack pending more discussion.
Users have attempted to run a containerized kubelet and have reported issues when running on the following Linux environment (
Linux moby 4.9.8-moby #1 SMP Wed Feb 8 09:56:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
) that are related to the presence of the openrc cgroup subsystem (https://wiki.gentoo.org/wiki/OpenRC/CGroups)The kubelet does cgroup creation via runc, but has an
Exists
code check that verifies the desired cgroup actually exists. It does this by iterating over each subsystem and ensuring the cgroup exists as expected (see: https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/cm/cgroup_manager_linux.go#L226).The kubelet can manually filter out this cgroup for now, but it would be nice if runc had a way to return back the list of subsystems it actually supports so additional unsupported subsystems do not cause confusion.
The text was updated successfully, but these errors were encountered: