From 9cdb00485150d5dba853b8a6d7fb05daae231f3b Mon Sep 17 00:00:00 2001 From: Yu-Ju Hong Date: Wed, 2 Sep 2015 16:36:57 -0700 Subject: [PATCH] kubelet: fix erratic restart count caused per-container restart backoff --- pkg/kubelet/dockertools/manager.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/kubelet/dockertools/manager.go b/pkg/kubelet/dockertools/manager.go index d4511314d4f..bb0b072d9ec 100644 --- a/pkg/kubelet/dockertools/manager.go +++ b/pkg/kubelet/dockertools/manager.go @@ -476,6 +476,14 @@ func (dm *DockerManager) GetPodStatus(pod *api.Pod) (*api.PodStatus, error) { if containerStatus, found := statuses[container.Name]; found { reason, ok := dm.reasonCache.Get(uid, container.Name) if ok && reason == kubecontainer.ErrCrashLoopBackOff.Error() { + // We need to increment the restart count if we are going to + // move the current state to last terminated state. + if containerStatus.State.Terminated != nil { + lastObservedTime, ok := lastObservedTime[container.Name] + if !ok || containerStatus.State.Terminated.FinishedAt.After(lastObservedTime.Time) { + containerStatus.RestartCount += 1 + } + } containerStatus.LastTerminationState = containerStatus.State containerStatus.State.Waiting = &api.ContainerStateWaiting{Reason: reason} containerStatus.State.Running = nil