mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	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.
This commit is contained in:
		@@ -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.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user