Skip to content

Commit 6c865fd

Browse files
authored
Merge pull request #1348 from a7i/amir/toomanyrestarts-initcontainer
fix: `RemovePodsHavingTooManyRestarts` to include `InitContainerStatuses`
2 parents af1ffe7 + 97c0044 commit 6c865fd

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

pkg/framework/plugins/removepodshavingtoomanyrestarts/toomanyrestarts.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,13 @@ func New(args runtime.Object, handle frameworktypes.Handle) (frameworktypes.Plug
8282
return true
8383
}
8484

85-
for _, containerStatus := range pod.Status.ContainerStatuses {
85+
containerStatuses := pod.Status.ContainerStatuses
86+
87+
if tooManyRestartsArgs.IncludingInitContainers {
88+
containerStatuses = append(containerStatuses, pod.Status.InitContainerStatuses...)
89+
}
90+
91+
for _, containerStatus := range containerStatuses {
8692
if containerStatus.State.Waiting != nil && states.Has(containerStatus.State.Waiting.Reason) {
8793
return true
8894
}

pkg/framework/plugins/removepodshavingtoomanyrestarts/toomanyrestarts_test.go

+36
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,42 @@ func TestRemovePodsHavingTooManyRestarts(t *testing.T) {
270270
}
271271
},
272272
},
273+
{
274+
description: "pods pending with initContainer with states=CrashLoopBackOff threshold(includingInitContainers=true), 3 pod evictions",
275+
args: RemovePodsHavingTooManyRestartsArgs{PodRestartThreshold: 1, States: []string{"CrashLoopBackOff"}, IncludingInitContainers: true},
276+
nodes: []*v1.Node{node1},
277+
expectedEvictedPodCount: 3,
278+
maxPodsToEvictPerNode: &uint3,
279+
applyFunc: func(pods []*v1.Pod) {
280+
for _, pod := range pods {
281+
pod.Status.InitContainerStatuses = []v1.ContainerStatus{
282+
{
283+
State: v1.ContainerState{
284+
Waiting: &v1.ContainerStateWaiting{Reason: "CrashLoopBackOff"},
285+
},
286+
},
287+
}
288+
}
289+
},
290+
},
291+
{
292+
description: "pods pending with initContainer with states=CrashLoopBackOff threshold(includingInitContainers=false), 0 pod evictions",
293+
args: RemovePodsHavingTooManyRestartsArgs{PodRestartThreshold: 1, States: []string{"CrashLoopBackOff"}, IncludingInitContainers: false},
294+
nodes: []*v1.Node{node1},
295+
expectedEvictedPodCount: 0,
296+
maxPodsToEvictPerNode: &uint3,
297+
applyFunc: func(pods []*v1.Pod) {
298+
for _, pod := range pods {
299+
pod.Status.InitContainerStatuses = []v1.ContainerStatus{
300+
{
301+
State: v1.ContainerState{
302+
Waiting: &v1.ContainerStateWaiting{Reason: "CrashLoopBackOff"},
303+
},
304+
},
305+
}
306+
}
307+
},
308+
},
273309
}
274310

275311
for _, tc := range tests {

0 commit comments

Comments
 (0)