ContainerRestartRules feature gate should work with probes

This commit is contained in:
Yuan Wang
2025-07-27 23:13:35 +00:00
parent d33916baa4
commit 9c8dacb037
3 changed files with 11 additions and 3 deletions

View File

@@ -1222,7 +1222,9 @@ func (m *kubeGenericRuntimeManager) computeInitContainerActions(ctx context.Cont
restartOnFailure := restartOnFailure
if utilfeature.DefaultFeatureGate.Enabled(features.ContainerRestartRules) {
restartOnFailure = kubecontainer.ShouldContainerBeRestarted(container, pod, podStatus)
if container.RestartPolicy != nil {
restartOnFailure = *container.RestartPolicy != v1.ContainerRestartPolicyNever
}
}
if !restartOnFailure {
changes.KillPod = true

View File

@@ -1147,7 +1147,9 @@ func (m *kubeGenericRuntimeManager) computePodActions(ctx context.Context, pod *
var reason containerKillReason
restart := shouldRestartOnFailure(pod)
if utilfeature.DefaultFeatureGate.Enabled(features.ContainerRestartRules) {
restart = kubecontainer.ShouldContainerBeRestarted(&container, pod, podStatus)
if container.RestartPolicy != nil {
restart = *container.RestartPolicy != v1.ContainerRestartPolicyNever
}
}
if _, _, changed := containerChanged(&container, containerStatus); changed {
message = fmt.Sprintf("Container %s definition changed", container.Name)

View File

@@ -2110,6 +2110,11 @@ func TestComputePodActionsWithInitAndEphemeralContainers(t *testing.T) {
}
func TestComputePodActionsWithContainerRestartRules(t *testing.T) {
// Make sure existing test cases pass with feature enabled
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ContainerRestartRules, true)
TestComputePodActions(t)
TestComputePodActionsWithInitContainers(t)
var (
containerRestartPolicyAlways = v1.ContainerRestartPolicyAlways
containerRestartPolicyOnFailure = v1.ContainerRestartPolicyOnFailure
@@ -2231,7 +2236,6 @@ func TestComputePodActionsWithContainerRestartRules(t *testing.T) {
},
},
} {
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ContainerRestartRules, true)
pod, status := makeBasePodAndStatus()
if test.mutatePodFn != nil {
test.mutatePodFn(pod)