From aae8a2847aa4831b4e8514ca061d391b3b163bcd Mon Sep 17 00:00:00 2001 From: "Keerthan Reddy,Mala" Date: Wed, 25 Mar 2020 14:55:18 -0700 Subject: [PATCH] Check for sandboxes before deleting the pod from apiserver --- pkg/kubelet/kubelet_pods.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 345566d1026..50eacfb09c2 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -940,6 +940,24 @@ func (kl *Kubelet) PodResourcesAreReclaimed(pod *v1.Pod, status v1.PodStatus) bo klog.V(3).Infof("Pod %q is terminated, but some containers have not been cleaned up: %s", format.Pod(pod), statusStr) return false } + // pod's sandboxes should be deleted + filter := &runtimeapi.PodSandboxFilter{ + LabelSelector: map[string]string{kubetypes.KubernetesPodUIDLabel: string(pod.UID)}, + } + sandboxes, err := kl.runtimeService.ListPodSandbox(filter) + if err != nil { + klog.V(3).Infof("Pod %q is terminated, Error getting pod sandboxes from the runtime service: %s", format.Pod(pod), err) + return false + } + if len(sandboxes) > 0 { + var sandboxStr string + for _, sandbox := range sandboxes { + sandboxStr += fmt.Sprintf("%+v ", sandbox) + } + klog.V(3).Infof("Pod %q is terminated, but some pod sandboxes have not been cleaned up: %s", format.Pod(pod), sandboxStr) + return false + } + if kl.podVolumesExist(pod.UID) && !kl.keepTerminatedPodVolumes { // We shouldn't delete pods whose volumes have not been cleaned up if we are not keeping terminated pod volumes klog.V(3).Infof("Pod %q is terminated, but some volumes have not been cleaned up", format.Pod(pod))