{ … // Now its safe to remove the pod's cgroup containerConfig := &CgroupConfig{ Name: podCgroup, ResourceParameters: &ResourceConfig{}, } if err := m.cgroupManager.Destroy(containerConfig); err != nil { klog.InfoS("Failed to delete cgroup paths", "cgroupName", podCgroup, "err", err) return fmt.Errorf("failed to delete cgroup paths for %v : %v", podCgroup, err) } return nil } (m *podContainerManagerImpl) Destroy() [What] Pod の cgroup path の削除を行う関数 cgroupManager の Destroy()を呼び出す [次に確認したいこと] 削除対象となる CgroupName はどこで指定されるか? kubelet のログレベルを上げてみることに → 以下のログが追加された Orphaned pod found, removing pod cgroups func (kl *Kubelet) cleanupOrphanedPodCgroups(pcm cm.PodContainerManager, cgroupPods map[types.UID]cm.CgroupName, possiblyRunningPods map[types.UID]sets.Empty) { // Iterate over all the found pods to verify if they should be running for uid, val := range cgroupPods { // if the pod is in the running set, its not a candidate for cleanup if _, ok := possiblyRunningPods[uid]; ok { continue } … klog.V(3).InfoS("Orphaned pod found, removing pod cgroups", "podUID", uid) go pcm.Destroy(val) } } (kl *Kubelet) cleanupOrphanedPodCgroups() [What] 全 Pod から running 状態ではないと思われるものを削除する 全 Pod の UID に対して、ループ処理 [次に確認したいこと] 削除対象となる map[types.UID]cm.CgroupName はどこで指定されるか? ※ 表示のため、本来のコードから一部変更してます https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/cm/pod_container_manager_linux.go#L197-L214 https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/kubelet_pods.go#L2301-L2330