From 6dbb533e3c3d29aea60d1f684a8a703d8be685a6 Mon Sep 17 00:00:00 2001 From: Ted Yu Date: Sun, 29 Sep 2019 19:53:43 -0700 Subject: [PATCH] Only kill process where killing failed during previous iterations --- pkg/kubelet/cm/pod_container_manager_linux.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/kubelet/cm/pod_container_manager_linux.go b/pkg/kubelet/cm/pod_container_manager_linux.go index f0bf4df880b..1be4f44775e 100644 --- a/pkg/kubelet/cm/pod_container_manager_linux.go +++ b/pkg/kubelet/cm/pod_container_manager_linux.go @@ -157,16 +157,22 @@ func (m *podContainerManagerImpl) tryKillingCgroupProcesses(podCgroup CgroupName var errlist []error // os.Kill often errors out, // We try killing all the pids multiple times + removed := map[int]bool{} for i := 0; i < 5; i++ { if i != 0 { klog.V(3).Infof("Attempt %v failed to kill all unwanted process. Retyring", i) } errlist = []error{} for _, pid := range pidsToKill { + if _, ok := removed[pid]; ok { + continue + } klog.V(3).Infof("Attempt to kill process with pid: %v", pid) if err := m.killOnePid(pid); err != nil { klog.V(3).Infof("failed to kill process with pid: %v", pid) errlist = append(errlist, err) + } else { + removed[pid] = true } } if len(errlist) == 0 {