kubernetes/kubernetes#22625 Fix issue of out-of-date Terminating mirror pod status

- During `kubelet` `syncPod`, check mirror pod `DeletionTimestamp` value to determine whether re-create mirror pod for running static pod.
This commit is contained in:
Xiaogang Xin 2016-03-07 13:42:41 +08:00
parent fea6b0d50c
commit e2eccddc6f

View File

@ -1738,14 +1738,16 @@ func (kl *Kubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, podStatus *kubecont
if kubepod.IsStaticPod(pod) { if kubepod.IsStaticPod(pod) {
podFullName := kubecontainer.GetPodFullName(pod) podFullName := kubecontainer.GetPodFullName(pod)
deleted := false deleted := false
if mirrorPod != nil && !kl.podManager.IsMirrorPodOf(mirrorPod, pod) { if mirrorPod != nil {
// The mirror pod is semantically different from the static pod. Remove if mirrorPod.DeletionTimestamp != nil || !kl.podManager.IsMirrorPodOf(mirrorPod, pod) {
// it. The mirror pod will get recreated later. // The mirror pod is semantically different from the static pod. Remove
glog.Errorf("Deleting mirror pod %q because it is outdated", format.Pod(mirrorPod)) // it. The mirror pod will get recreated later.
if err := kl.podManager.DeleteMirrorPod(podFullName); err != nil { glog.Errorf("Deleting mirror pod %q because it is outdated", format.Pod(mirrorPod))
glog.Errorf("Failed deleting mirror pod %q: %v", format.Pod(mirrorPod), err) if err := kl.podManager.DeleteMirrorPod(podFullName); err != nil {
} else { glog.Errorf("Failed deleting mirror pod %q: %v", format.Pod(mirrorPod), err)
deleted = true } else {
deleted = true
}
} }
} }
if mirrorPod == nil || deleted { if mirrorPod == nil || deleted {