From 1eddab3313baa86321d24f5968a7777387ad4db4 Mon Sep 17 00:00:00 2001 From: David Ashpole Date: Mon, 2 Oct 2017 10:15:08 -0700 Subject: [PATCH] remove containers of deleted pods once all containers have exited --- pkg/kubelet/kubelet.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 12520835995..5d19508ac2f 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -2152,8 +2152,10 @@ func (kl *Kubelet) cleanUpContainersInPod(podID types.UID, exitedContainerID str if podStatus, err := kl.podCache.Get(podID); err == nil { removeAll := false if syncedPod, ok := kl.podManager.GetPodByUID(podID); ok { - // When an evicted pod has already synced, all containers can be removed. - removeAll = eviction.PodIsEvicted(syncedPod.Status) + // generate the api status using the cached runtime status to get up-to-date ContainerStatuses + apiPodStatus := kl.generateAPIPodStatus(syncedPod, podStatus) + // When an evicted or deleted pod has already synced, all containers can be removed. + removeAll = eviction.PodIsEvicted(syncedPod.Status) || (syncedPod.DeletionTimestamp != nil && notRunning(apiPodStatus.ContainerStatuses)) } kl.containerDeletor.deleteContainersInPod(exitedContainerID, podStatus, removeAll) }