From fcfaf1a3bd4f0a282fe927edb8007f64704adb2c Mon Sep 17 00:00:00 2001 From: Wojciech Tyczynski Date: Sat, 28 May 2016 16:11:53 +0200 Subject: [PATCH] Revert "Fix system container detection in kubelet on systemd" --- pkg/kubelet/cm/container_manager_linux.go | 40 +++-------------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go index 70b53a56088..a548bf7834d 100644 --- a/pkg/kubelet/cm/container_manager_linux.go +++ b/pkg/kubelet/cm/container_manager_linux.go @@ -536,49 +536,19 @@ func ensureProcessInContainer(pid int, oomScoreAdj int, manager *fs.Manager) err return utilerrors.NewAggregate(errs) } -// getContainer returns the cgroup associated with the specified pid. -// It enforces a unified hierarchy for memory and cpu cgroups. -// On systemd environments, it uses the name=systemd cgroup for the specified pid. +// Gets the (CPU) container the specified pid is in. func getContainer(pid int) (string, error) { cgs, err := cgroups.ParseCgroupFile(fmt.Sprintf("/proc/%d/cgroup", pid)) if err != nil { return "", err } - cpu, found := cgs["cpu"] - if !found { - return "", cgroups.NewNotFoundError("cpu") - } - memory, found := cgs["memory"] - if !found { - return "", cgroups.NewNotFoundError("memory") + cg, ok := cgs["cpu"] + if ok { + return cg, nil } - // since we use this container for accounting, we need to ensure its a unified hierarchy. - if cpu != memory { - return "", fmt.Errorf("cpu and memory cgroup hierarchy not unified. cpu: %s, memory: %s", cpu, memory) - } - - // on systemd, every pid is in a unified cgroup hierarchy (name=systemd as seen in systemd-cgls) - // cpu and memory accounting is off by default, users may choose to enable it per unit or globally. - // users could enable CPU and memory accounting globally via /etc/systemd/system.conf (DefaultCPUAccounting=true DefaultMemoryAccounting=true). - // users could also enable CPU and memory accounting per unit via CPUAccounting=true and MemoryAccounting=true - // we only warn if accounting is not enabled for CPU or memory so as to not break local development flows where kubelet is launched in a terminal. - // for example, the cgroup for the user session will be something like /user.slice/user-X.slice/session-X.scope, but the cpu and memory - // cgroup will be the closest ancestor where accounting is performed (most likely /) on systems that launch docker containers. - // as a result, on those systems, you will not get cpu or memory accounting statistics for kubelet. - // in addition, you would not get memory or cpu accounting for the runtime unless accounting was enabled on its unit (or globally). - if systemd, found := cgs["name=systemd"]; found { - if systemd != cpu { - glog.Warningf("CPUAccounting not enabled for pid: %d", pid) - } - if systemd != memory { - glog.Warningf("MemoryAccounting not enabled for pid: %d", pid) - } - return systemd, nil - } - - return cpu, nil + return "", cgroups.NewNotFoundError("cpu") } // Ensures the system container is created and all non-kernel threads and process 1