1
0
mirror of https://github.com/kubernetes-sigs/descheduler.git synced 2026-01-26 13:29:11 +01:00

feat: support MaxNoOfPodsToEvictTotal

This commit is contained in:
zhifei92
2024-06-28 11:23:02 +08:00
parent 9d16c28f43
commit e60f525ec6
25 changed files with 184 additions and 25 deletions

View File

@@ -112,6 +112,8 @@ loop:
switch err.(type) {
case *evictions.EvictionNodeLimitError:
continue loop
case *evictions.EvictionTotalLimitError:
return nil
default:
klog.Errorf("eviction failed: %v", err)
}

View File

@@ -121,6 +121,7 @@ func TestPodAntiAffinity(t *testing.T) {
description string
maxPodsToEvictPerNode *uint
maxNoOfPodsToEvictPerNamespace *uint
maxNoOfPodsToEvictTotal *uint
pods []*v1.Pod
expectedEvictedPodCount uint
nodeFit bool
@@ -146,6 +147,14 @@ func TestPodAntiAffinity(t *testing.T) {
nodes: []*v1.Node{node1},
expectedEvictedPodCount: 3,
},
{
description: "Maximum pods to evict (maxNoOfPodsToEvictTotal)",
maxNoOfPodsToEvictPerNamespace: &uint3,
maxNoOfPodsToEvictTotal: &uint1,
pods: []*v1.Pod{p1, p2, p3, p4},
nodes: []*v1.Node{node1},
expectedEvictedPodCount: 1,
},
{
description: "Evict only 1 pod after sorting",
pods: []*v1.Pod{p5, p6, p7},
@@ -237,7 +246,8 @@ func TestPodAntiAffinity(t *testing.T) {
eventRecorder,
evictions.NewOptions().
WithMaxPodsToEvictPerNode(test.maxPodsToEvictPerNode).
WithMaxPodsToEvictPerNamespace(test.maxNoOfPodsToEvictPerNamespace),
WithMaxPodsToEvictPerNamespace(test.maxNoOfPodsToEvictPerNamespace).
WithMaxPodsToEvictTotal(test.maxNoOfPodsToEvictTotal),
)
defaultevictorArgs := &defaultevictor.DefaultEvictorArgs{