Skip to content

Commit 141951c

Browse files
authored
Merge pull request kubernetes#126420 from hoskeri/fix-container-succeeded-check-status
kuberuntime_manager: fix container success check.
2 parents 632ed16 + ae52684 commit 141951c

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

pkg/kubelet/kuberuntime/kuberuntime_manager.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,10 +534,11 @@ func shouldRestartOnFailure(pod *v1.Pod) bool {
534534

535535
func containerSucceeded(c *v1.Container, podStatus *kubecontainer.PodStatus) bool {
536536
cStatus := podStatus.FindContainerStatusByName(c.Name)
537-
if cStatus == nil || cStatus.State == kubecontainer.ContainerStateRunning {
537+
if cStatus == nil {
538538
return false
539539
}
540-
return cStatus.ExitCode == 0
540+
// Container has exited, with an exit code of 0.
541+
return cStatus.State == kubecontainer.ContainerStateExited && cStatus.ExitCode == 0
541542
}
542543

543544
func isInPlacePodVerticalScalingAllowed(pod *v1.Pod) bool {

pkg/kubelet/kuberuntime/kuberuntime_manager_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,22 @@ func TestComputePodActions(t *testing.T) {
995995
ContainersToKill: getKillMap(basePod, baseStatus, []int{}),
996996
},
997997
},
998+
"restart created but not started containers if RestartPolicy == OnFailure": {
999+
mutatePodFn: func(pod *v1.Pod) { pod.Spec.RestartPolicy = v1.RestartPolicyOnFailure },
1000+
mutateStatusFn: func(status *kubecontainer.PodStatus) {
1001+
// The first container completed, don't restart it.
1002+
status.ContainerStatuses[0].State = kubecontainer.ContainerStateExited
1003+
status.ContainerStatuses[0].ExitCode = 0
1004+
1005+
// The second container was created, but never started.
1006+
status.ContainerStatuses[1].State = kubecontainer.ContainerStateCreated
1007+
},
1008+
actions: podActions{
1009+
SandboxID: baseStatus.SandboxStatuses[0].Id,
1010+
ContainersToStart: []int{1},
1011+
ContainersToKill: getKillMap(basePod, baseStatus, []int{}),
1012+
},
1013+
},
9981014
"don't restart containers if RestartPolicy == Never": {
9991015
mutatePodFn: func(pod *v1.Pod) { pod.Spec.RestartPolicy = v1.RestartPolicyNever },
10001016
mutateStatusFn: func(status *kubecontainer.PodStatus) {

0 commit comments

Comments
 (0)