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

Split pod evictor and evictor filter

This commit is contained in:
Jan Chaloupka
2022-06-13 09:18:47 +02:00
parent 84c8d1ca03
commit d2130747d8
28 changed files with 266 additions and 252 deletions

View File

@@ -145,11 +145,6 @@ func TestRemoveDuplicates(t *testing.T) {
nil,
nil,
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
false,
)
@@ -165,6 +160,14 @@ func TestRemoveDuplicates(t *testing.T) {
},
workerNodes,
podEvictor,
evictions.NewEvictorFilter(
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
),
getPodsAssignedToNode,
)

View File

@@ -15,6 +15,7 @@ import (
"k8s.io/utils/pointer"
deschedulerapi "sigs.k8s.io/descheduler/pkg/api"
"sigs.k8s.io/descheduler/pkg/descheduler/evictions"
"sigs.k8s.io/descheduler/pkg/descheduler/strategies"
)
@@ -96,6 +97,14 @@ func TestFailedPods(t *testing.T) {
},
nodes,
podEvictor,
evictions.NewEvictorFilter(
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
),
getPodsAssignedToNode,
)
t.Logf("Finished RemoveFailedPods strategy for %s", name)

View File

@@ -177,19 +177,26 @@ func runPodLifetimeStrategy(
}
maxPodLifeTimeSeconds := uint(1)
strategy := deschedulerapi.DeschedulerStrategy{
Enabled: true,
Params: &deschedulerapi.StrategyParameters{
PodLifeTime: &deschedulerapi.PodLifeTime{MaxPodLifeTimeSeconds: &maxPodLifeTimeSeconds},
Namespaces: namespaces,
ThresholdPriority: priority,
ThresholdPriorityClassName: priorityClass,
LabelSelector: labelSelector,
},
}
thresholdPriority, err := utils.GetPriorityFromStrategyParams(ctx, clientset, strategy.Params)
if err != nil {
t.Fatalf("Failed to get threshold priority from strategy's params")
}
strategies.PodLifeTime(
ctx,
clientset,
deschedulerapi.DeschedulerStrategy{
Enabled: true,
Params: &deschedulerapi.StrategyParameters{
PodLifeTime: &deschedulerapi.PodLifeTime{MaxPodLifeTimeSeconds: &maxPodLifeTimeSeconds},
Namespaces: namespaces,
ThresholdPriority: priority,
ThresholdPriorityClassName: priorityClass,
LabelSelector: labelSelector,
},
},
strategy,
nodes,
evictions.NewPodEvictor(
clientset,
@@ -197,13 +204,17 @@ func runPodLifetimeStrategy(
false,
nil,
maxPodsToEvictPerNamespace,
nodes,
false,
),
evictions.NewEvictorFilter(
nodes,
getPodsAssignedToNode,
false,
evictCritical,
false,
false,
false,
evictions.WithPriorityThreshold(thresholdPriority),
),
getPodsAssignedToNode,
)
@@ -326,7 +337,16 @@ func TestLowNodeUtilization(t *testing.T) {
// Run LowNodeUtilization strategy
podEvictor := initPodEvictorOrFail(t, clientSet, getPodsAssignedToNode, nodes)
podFilter, err := podutil.NewOptions().WithFilter(podEvictor.Evictable().IsEvictable).BuildFilterFunc()
evictorFilter := evictions.NewEvictorFilter(
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
)
podFilter, err := podutil.NewOptions().WithFilter(evictorFilter.Filter).BuildFilterFunc()
if err != nil {
t.Errorf("Error initializing pod filter function, %v", err)
}
@@ -356,12 +376,13 @@ func TestLowNodeUtilization(t *testing.T) {
},
workerNodes,
podEvictor,
evictorFilter,
getPodsAssignedToNode,
)
waitForTerminatingPodsToDisappear(ctx, t, clientSet, rc.Namespace)
podFilter, err = podutil.NewOptions().WithFilter(podEvictor.Evictable().IsEvictable).BuildFilterFunc()
podFilter, err = podutil.NewOptions().WithFilter(evictorFilter.Filter).BuildFilterFunc()
if err != nil {
t.Errorf("Error initializing pod filter function, %v", err)
}
@@ -1410,11 +1431,6 @@ func initPodEvictorOrFail(t *testing.T, clientSet clientset.Interface, getPodsAs
nil,
nil,
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
false,
)
}

View File

@@ -138,13 +138,9 @@ func TestTooManyRestarts(t *testing.T) {
nil,
nil,
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
false,
)
// Run RemovePodsHavingTooManyRestarts strategy
t.Log("Running RemovePodsHavingTooManyRestarts strategy")
strategies.RemovePodsHavingTooManyRestarts(
@@ -161,6 +157,14 @@ func TestTooManyRestarts(t *testing.T) {
},
workerNodes,
podEvictor,
evictions.NewEvictorFilter(
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
),
getPodsAssignedToNode,
)

View File

@@ -11,6 +11,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
deschedulerapi "sigs.k8s.io/descheduler/pkg/api"
"sigs.k8s.io/descheduler/pkg/descheduler/evictions"
"sigs.k8s.io/descheduler/pkg/descheduler/strategies"
)
@@ -92,6 +93,14 @@ func TestTopologySpreadConstraint(t *testing.T) {
},
nodes,
podEvictor,
evictions.NewEvictorFilter(
nodes,
getPodsAssignedToNode,
true,
false,
false,
false,
),
getPodsAssignedToNode,
)
t.Logf("Finished RemovePodsViolatingTopologySpreadConstraint strategy for %s", name)