CRI: Handle container/sandbox restarts for pod with RestartPolicy == Never

If all sandbox and containers are dead in a pod, and the restart policy is
"Never", kubelet should not try to recreate all of them.
pull/6/head
Yu-Ju Hong 2016-10-21 10:06:19 -07:00
parent 8b510f3ef4
commit 32f05cda4a
1 changed files with 8 additions and 7 deletions

View File

@ -471,13 +471,6 @@ func (m *kubeGenericRuntimeManager) computePodContainerChanges(pod *api.Pod, pod
// check the status of containers.
for index, container := range pod.Spec.Containers {
if sandboxChanged {
message := fmt.Sprintf("Container %+v's pod sandbox is dead, the container will be recreated.", container)
glog.Info(message)
changes.ContainersToStart[index] = message
continue
}
containerStatus := podStatus.FindContainerStatusByName(container.Name)
if containerStatus == nil || containerStatus.State != kubecontainer.ContainerStateRunning {
if kubecontainer.ShouldContainerBeRestarted(&container, pod, podStatus) {
@ -487,6 +480,14 @@ func (m *kubeGenericRuntimeManager) computePodContainerChanges(pod *api.Pod, pod
}
continue
}
if sandboxChanged {
if pod.Spec.RestartPolicy != api.RestartPolicyNever {
message := fmt.Sprintf("Container %+v's pod sandbox is dead, the container will be recreated.", container)
glog.Info(message)
changes.ContainersToStart[index] = message
}
continue
}
if initFailed {
// Initialization failed and Container exists.