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

Add k8s compatibility warnings to logs

This commit is contained in:
JaneLiuL
2023-02-23 20:21:12 +08:00
parent e51e8b831f
commit 7068fc6082
2 changed files with 32 additions and 2 deletions

View File

@@ -242,7 +242,7 @@ func enableProfilePluginsByType(profilePlugins api.Plugins, pluginInstance frame
func checkBalance(profilePlugins api.Plugins, pluginInstance framework.Plugin, pluginConfig *api.PluginConfig) api.Plugins { func checkBalance(profilePlugins api.Plugins, pluginInstance framework.Plugin, pluginConfig *api.PluginConfig) api.Plugins {
_, ok := pluginInstance.(framework.BalancePlugin) _, ok := pluginInstance.(framework.BalancePlugin)
if ok { if ok {
klog.V(3).Info("converting Balance plugin: %s", pluginInstance.Name()) klog.V(3).Infof("converting Balance plugin: %s", pluginInstance.Name())
profilePlugins.Balance.Enabled = []string{pluginConfig.Name} profilePlugins.Balance.Enabled = []string{pluginConfig.Name}
} }
return profilePlugins return profilePlugins
@@ -251,7 +251,7 @@ func checkBalance(profilePlugins api.Plugins, pluginInstance framework.Plugin, p
func checkDeschedule(profilePlugins api.Plugins, pluginInstance framework.Plugin, pluginConfig *api.PluginConfig) api.Plugins { func checkDeschedule(profilePlugins api.Plugins, pluginInstance framework.Plugin, pluginConfig *api.PluginConfig) api.Plugins {
_, ok := pluginInstance.(framework.DeschedulePlugin) _, ok := pluginInstance.(framework.DeschedulePlugin)
if ok { if ok {
klog.V(3).Info("converting Deschedule plugin: %s", pluginInstance.Name()) klog.V(3).Infof("converting Deschedule plugin: %s", pluginInstance.Name())
profilePlugins.Deschedule.Enabled = []string{pluginConfig.Name} profilePlugins.Deschedule.Enabled = []string{pluginConfig.Name}
} }
return profilePlugins return profilePlugins

View File

@@ -19,6 +19,9 @@ package descheduler
import ( import (
"context" "context"
"fmt" "fmt"
"math"
"strconv"
"strings"
"time" "time"
componentbaseconfig "k8s.io/component-base/config" componentbaseconfig "k8s.io/component-base/config"
@@ -49,6 +52,7 @@ import (
"sigs.k8s.io/descheduler/pkg/framework/pluginregistry" "sigs.k8s.io/descheduler/pkg/framework/pluginregistry"
"sigs.k8s.io/descheduler/pkg/framework/plugins/defaultevictor" "sigs.k8s.io/descheduler/pkg/framework/plugins/defaultevictor"
"sigs.k8s.io/descheduler/pkg/utils" "sigs.k8s.io/descheduler/pkg/utils"
"sigs.k8s.io/descheduler/pkg/version"
) )
type enabledDeschedulePluginEntry struct { type enabledDeschedulePluginEntry struct {
@@ -83,6 +87,9 @@ func Run(ctx context.Context, rs *options.DeschedulerServer) error {
return fmt.Errorf("deschedulerPolicy is nil") return fmt.Errorf("deschedulerPolicy is nil")
} }
// Add k8s compatibility warnings to logs
versionCompatibilityCheck(rs)
evictionPolicyGroupVersion, err := eutils.SupportEviction(rs.Client) evictionPolicyGroupVersion, err := eutils.SupportEviction(rs.Client)
if err != nil || len(evictionPolicyGroupVersion) == 0 { if err != nil || len(evictionPolicyGroupVersion) == 0 {
return err return err
@@ -110,6 +117,29 @@ func Run(ctx context.Context, rs *options.DeschedulerServer) error {
return runFn() return runFn()
} }
func versionCompatibilityCheck(rs *options.DeschedulerServer) {
serverVersion, serverErr := rs.Client.Discovery().ServerVersion()
if serverErr != nil {
klog.V(1).InfoS("Warning: Get Kubernetes server version fail")
return
}
deschedulerMinorVersion := strings.Split(version.Get().Minor, ".")[0]
deschedulerMinorVersionFloat, err := strconv.ParseFloat(deschedulerMinorVersion, 64)
if err != nil {
klog.Warning("Warning: Convert Descheduler minor version to float fail")
}
kubernetesMinorVersionFloat, err := strconv.ParseFloat(serverVersion.Minor, 64)
if err != nil {
klog.Warning("Warning: Convert Kubernetes server minor version to float fail")
}
if math.Abs(deschedulerMinorVersionFloat-kubernetesMinorVersionFloat) > 3 {
klog.Warningf("Warning: Descheduler minor version %v is not supported on your version of Kubernetes %v.%v. See compatibility docs for more info: https://github.com/kubernetes-sigs/descheduler#compatibility-matrix", deschedulerMinorVersion, serverVersion.Major, serverVersion.Minor)
}
}
func cachedClient( func cachedClient(
realClient clientset.Interface, realClient clientset.Interface,
podLister listersv1.PodLister, podLister listersv1.PodLister,