diff --git a/pkg/kubelet/pod_manager.go b/pkg/kubelet/pod_manager.go index 562a039c09b..1f261e87641 100644 --- a/pkg/kubelet/pod_manager.go +++ b/pkg/kubelet/pod_manager.go @@ -249,22 +249,25 @@ func (self *basicPodManager) TranslatePodUID(uid types.UID) types.UID { return uid } -func (self *basicPodManager) getFullNameMaps() (map[string]*api.Pod, map[string]*api.Pod) { +func (self *basicPodManager) getOrphanedMirrorPodNames() []string { self.lock.RLock() defer self.lock.RUnlock() - return self.podByFullName, self.mirrorPodByFullName + var podFullNames []string + for podFullName := range self.mirrorPodByFullName { + if _, ok := self.podByFullName[podFullName]; !ok { + podFullNames = append(podFullNames, podFullName) + } + } + return podFullNames } // Delete all mirror pods which do not have associated static pods. This method // sends deletion requets to the API server, but does NOT modify the internal // pod storage in basicPodManager. func (self *basicPodManager) DeleteOrphanedMirrorPods() { - podByFullName, mirrorPodByFullName := self.getFullNameMaps() - - for podFullName := range mirrorPodByFullName { - if _, ok := podByFullName[podFullName]; !ok { - self.mirrorClient.DeleteMirrorPod(podFullName) - } + podFullNames := self.getOrphanedMirrorPodNames() + for _, podFullName := range podFullNames { + self.mirrorClient.DeleteMirrorPod(podFullName) } }