// makePodToVerifyCgroupRemoved verfies the specified cgroup does not exist. func makePodToVerifyCgroupRemoved(cgroupName cm.CgroupName) *api.Pod { cgroupFsName := string(cgroupName) if framework.TestContext.KubeletConfig.CgroupDriver == "systemd" { cgroupFsName = cm.ConvertCgroupNameToSystemd(cm.CgroupName(cgroupName), true) } pod := &api.Pod{ ObjectMeta: api.ObjectMeta{ Name: "pod" + string(uuid.NewUUID()), }, Spec: api.PodSpec{ RestartPolicy: api.RestartPolicyOnFailure, Containers: []api.Container{ { Image: "gcr.io/google_containers/busybox:1.24", Name: "container" + string(uuid.NewUUID()), Command: []string{"sh", "-c", "for i in `seq 1 10`; do if [ ! -d /tmp/memory/" + cgroupFsName + " ] && [ ! -d /tmp/cpu/" + cgroupFsName + " ]; then exit 0; else sleep 10; fi; done; exit 1"}, VolumeMounts: []api.VolumeMount{ { Name: "sysfscgroup", MountPath: "/tmp", }, }, }, }, Volumes: []api.Volume{ { Name: "sysfscgroup", VolumeSource: api.VolumeSource{ HostPath: &api.HostPathVolumeSource{Path: "/sys/fs/cgroup"}, }, }, }, }, } return pod }
}, }, }, } return pod } var _ = framework.KubeDescribe("Kubelet Cgroup Manager", func() { f := framework.NewDefaultFramework("kubelet-cgroup-manager") Describe("QOS containers", func() { Context("On enabling QOS cgroup hierarchy", func() { It("Top level QoS containers should have been created", func() { if !framework.TestContext.KubeletConfig.ExperimentalCgroupsPerQOS { return } cgroupsToVerify := []cm.CgroupName{cm.CgroupName(qos.Burstable), cm.CgroupName(qos.BestEffort)} pod := makePodToVerifyCgroups(cgroupsToVerify) f.PodClient().Create(pod) err := framework.WaitForPodSuccessInNamespace(f.ClientSet, pod.Name, f.Namespace.Name) Expect(err).NotTo(HaveOccurred()) }) }) }) Describe("Pod containers", func() { Context("On scheduling a Guaranteed Pod", func() { It("Pod containers should have been created under the cgroup-root", func() { if !framework.TestContext.KubeletConfig.ExperimentalCgroupsPerQOS { return } var (