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) }