diff --git a/pkg/framework/plugins/podlifetime/validation.go b/pkg/framework/plugins/podlifetime/validation.go index 973dceb6af..02188f940f 100644 --- a/pkg/framework/plugins/podlifetime/validation.go +++ b/pkg/framework/plugins/podlifetime/validation.go @@ -44,12 +44,14 @@ func ValidatePodLifeTimeArgs(obj runtime.Object) error { } } podLifeTimeAllowedStates := sets.New( + // Pod phase reasons string(v1.PodRunning), string(v1.PodPending), - // Container state reasons: https://github.com/kubernetes/kubernetes/blob/release-1.24/pkg/kubelet/kubelet_pods.go#L76-L79 + // Container state reasons "PodInitializing", "ContainerCreating", + "CrashLoopBackOff", ) if !podLifeTimeAllowedStates.HasAll(args.States...) { diff --git a/pkg/framework/plugins/podlifetime/validation_test.go b/pkg/framework/plugins/podlifetime/validation_test.go index b427974272..3dfe280af5 100644 --- a/pkg/framework/plugins/podlifetime/validation_test.go +++ b/pkg/framework/plugins/podlifetime/validation_test.go @@ -20,6 +20,7 @@ import ( "testing" v1 "k8s.io/api/core/v1" + utilpointer "k8s.io/utils/pointer" ) func TestValidateRemovePodLifeTimeArgs(t *testing.T) { @@ -31,7 +32,7 @@ func TestValidateRemovePodLifeTimeArgs(t *testing.T) { { description: "valid arg, no errors", args: &PodLifeTimeArgs{ - MaxPodLifeTimeSeconds: func(i uint) *uint { return &i }(1), + MaxPodLifeTimeSeconds: utilpointer.Uint(1), States: []string{string(v1.PodRunning)}, }, expectError: false, @@ -50,6 +51,14 @@ func TestValidateRemovePodLifeTimeArgs(t *testing.T) { }, expectError: true, }, + { + description: "allows CrashLoopBackOff state", + args: &PodLifeTimeArgs{ + MaxPodLifeTimeSeconds: utilpointer.Uint(1), + States: []string{"CrashLoopBackOff"}, + }, + expectError: false, + }, } for _, tc := range testCases {