From cff984261e4ebe968d3c96bf4dc5c22e86fa87a6 Mon Sep 17 00:00:00 2001 From: Sean Malloy Date: Tue, 12 May 2020 00:18:20 -0500 Subject: [PATCH] Log an error when EvictPod method returns a non-nil error End users should be able to see the detailed error from the EvictPod method when it fails. Updates all strategies to log the error. The PodLifeTime strategy already logs this error. --- pkg/descheduler/strategies/duplicates.go | 3 ++- pkg/descheduler/strategies/lownodeutilization.go | 1 + pkg/descheduler/strategies/node_affinity.go | 4 +++- pkg/descheduler/strategies/node_taint.go | 4 +++- pkg/descheduler/strategies/pod_antiaffinity.go | 1 + pkg/descheduler/strategies/toomanyrestarts.go | 4 +++- 6 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/descheduler/strategies/duplicates.go b/pkg/descheduler/strategies/duplicates.go index 2bc6541ac..258521f3c 100644 --- a/pkg/descheduler/strategies/duplicates.go +++ b/pkg/descheduler/strategies/duplicates.go @@ -20,7 +20,7 @@ import ( "context" "strings" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" clientset "k8s.io/client-go/kubernetes" "k8s.io/klog" @@ -49,6 +49,7 @@ func RemoveDuplicatePods( // i = 0 does not evict the first pod for i := 1; i < len(pods); i++ { if _, err := podEvictor.EvictPod(ctx, pods[i], node); err != nil { + klog.Errorf("Error evicting pod: (%#v)", err) break } } diff --git a/pkg/descheduler/strategies/lownodeutilization.go b/pkg/descheduler/strategies/lownodeutilization.go index 9fed3fdfe..0fd2148e4 100644 --- a/pkg/descheduler/strategies/lownodeutilization.go +++ b/pkg/descheduler/strategies/lownodeutilization.go @@ -262,6 +262,7 @@ func evictPods( success, err := podEvictor.EvictPod(ctx, pod, node) if err != nil { + klog.Errorf("Error evicting pod: (%#v)", err) break } diff --git a/pkg/descheduler/strategies/node_affinity.go b/pkg/descheduler/strategies/node_affinity.go index fc122d717..8a687f34c 100644 --- a/pkg/descheduler/strategies/node_affinity.go +++ b/pkg/descheduler/strategies/node_affinity.go @@ -18,7 +18,8 @@ package strategies import ( "context" - "k8s.io/api/core/v1" + + v1 "k8s.io/api/core/v1" clientset "k8s.io/client-go/kubernetes" "k8s.io/klog" @@ -47,6 +48,7 @@ func RemovePodsViolatingNodeAffinity(ctx context.Context, client clientset.Inter if !nodeutil.PodFitsCurrentNode(pod, node) && nodeutil.PodFitsAnyNode(pod, nodes) { klog.V(1).Infof("Evicting pod: %v", pod.Name) if _, err := podEvictor.EvictPod(ctx, pod, node); err != nil { + klog.Errorf("Error evicting pod: (%#v)", err) break } } diff --git a/pkg/descheduler/strategies/node_taint.go b/pkg/descheduler/strategies/node_taint.go index 691742f3c..2c1dc1989 100644 --- a/pkg/descheduler/strategies/node_taint.go +++ b/pkg/descheduler/strategies/node_taint.go @@ -18,12 +18,13 @@ package strategies import ( "context" + "sigs.k8s.io/descheduler/pkg/api" "sigs.k8s.io/descheduler/pkg/descheduler/evictions" podutil "sigs.k8s.io/descheduler/pkg/descheduler/pod" "sigs.k8s.io/descheduler/pkg/utils" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" clientset "k8s.io/client-go/kubernetes" "k8s.io/klog" ) @@ -46,6 +47,7 @@ func RemovePodsViolatingNodeTaints(ctx context.Context, client clientset.Interfa ) { klog.V(2).Infof("Not all taints with NoSchedule effect are tolerated after update for pod %v on node %v", pods[i].Name, node.Name) if _, err := podEvictor.EvictPod(ctx, pods[i], node); err != nil { + klog.Errorf("Error evicting pod: (%#v)", err) break } } diff --git a/pkg/descheduler/strategies/pod_antiaffinity.go b/pkg/descheduler/strategies/pod_antiaffinity.go index 7bfadada1..e5a04e834 100644 --- a/pkg/descheduler/strategies/pod_antiaffinity.go +++ b/pkg/descheduler/strategies/pod_antiaffinity.go @@ -42,6 +42,7 @@ func RemovePodsViolatingInterPodAntiAffinity(ctx context.Context, client clients if checkPodsWithAntiAffinityExist(pods[i], pods) { success, err := podEvictor.EvictPod(ctx, pods[i], node) if err != nil { + klog.Errorf("Error evicting pod: (%#v)", err) break } diff --git a/pkg/descheduler/strategies/toomanyrestarts.go b/pkg/descheduler/strategies/toomanyrestarts.go index ba5f5fcc0..ff68bb977 100644 --- a/pkg/descheduler/strategies/toomanyrestarts.go +++ b/pkg/descheduler/strategies/toomanyrestarts.go @@ -18,7 +18,8 @@ package strategies import ( "context" - "k8s.io/api/core/v1" + + v1 "k8s.io/api/core/v1" clientset "k8s.io/client-go/kubernetes" "k8s.io/klog" @@ -53,6 +54,7 @@ func RemovePodsHavingTooManyRestarts(ctx context.Context, client clientset.Inter continue } if _, err := podEvictor.EvictPod(ctx, pods[i], node); err != nil { + klog.Errorf("Error evicting pod: (%#v)", err) break } }