Skip to content

Commit

Permalink
util: remove eviction-related duplicate implementations (#1393)
Browse files Browse the repository at this point in the history
Signed-off-by: lisen <lisen@youzan.com>
Co-authored-by: lisen <lisen@youzan.com>
  • Loading branch information
leason00 and lisen committed Jun 25, 2023
1 parent 4b581fb commit 1120b41
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 94 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (

sev1alpha1 "github.com/koordinator-sh/koordinator/apis/scheduling/v1alpha1"
"github.com/koordinator-sh/koordinator/pkg/descheduler/evictions"
evictutils "github.com/koordinator-sh/koordinator/pkg/descheduler/evictions/utils"
"github.com/koordinator-sh/koordinator/pkg/util"
)

func init() {
Expand All @@ -42,7 +42,7 @@ type NativeEvictor struct {
}

func NewNativeEvictor(client kubernetes.Interface) (Interface, error) {
policyGroupVersion, err := evictutils.SupportEviction(client)
policyGroupVersion, err := util.SupportEviction(client)
if err != nil {
return nil, fmt.Errorf("failed to fetch eviction groupVersion: %v", err)
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/descheduler/evictions/evictions.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ import (
"k8s.io/klog/v2"
"k8s.io/utils/pointer"

evictutils "github.com/koordinator-sh/koordinator/pkg/descheduler/evictions/utils"
"github.com/koordinator-sh/koordinator/pkg/descheduler/framework"
"github.com/koordinator-sh/koordinator/pkg/descheduler/metrics"
nodeutil "github.com/koordinator-sh/koordinator/pkg/descheduler/node"
podutil "github.com/koordinator-sh/koordinator/pkg/descheduler/pod"
"github.com/koordinator-sh/koordinator/pkg/descheduler/utils"
"github.com/koordinator-sh/koordinator/pkg/util"
)

const (
Expand Down Expand Up @@ -164,7 +164,7 @@ func (pe *PodEvictor) Evict(ctx context.Context, pod *corev1.Pod, opts framework

func EvictPod(ctx context.Context, client clientset.Interface, pod *corev1.Pod, policyGroupVersion string, deleteOptions *metav1.DeleteOptions) error {
var err error
if policyGroupVersion == evictutils.EvictionGroupName+"/v1beta1" {
if policyGroupVersion == util.EvictionGroupName+"/v1beta1" {
eviction := &policyv1beta1.Eviction{
ObjectMeta: metav1.ObjectMeta{
Name: pod.Name,
Expand Down
68 changes: 0 additions & 68 deletions pkg/descheduler/evictions/utils/utils.go

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ import (

"github.com/koordinator-sh/koordinator/pkg/descheduler/apis/config/v1alpha2"
"github.com/koordinator-sh/koordinator/pkg/descheduler/evictions"
evictutils "github.com/koordinator-sh/koordinator/pkg/descheduler/evictions/utils"
"github.com/koordinator-sh/koordinator/pkg/descheduler/framework"
"github.com/koordinator-sh/koordinator/pkg/descheduler/framework/plugins/kubernetes/adaptor"
"github.com/koordinator-sh/koordinator/pkg/util"
)

const (
Expand Down Expand Up @@ -79,7 +79,7 @@ func New(args runtime.Object, handle framework.Handle) (framework.Plugin, error)
return nil, err
}

policyGroupVersion, err := evictutils.SupportEviction(handle.ClientSet())
policyGroupVersion, err := util.SupportEviction(handle.ClientSet())
if err != nil {
return nil, fmt.Errorf("failed to fetch eviction groupVersion: %v", err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import (
koordfake "github.com/koordinator-sh/koordinator/pkg/client/clientset/versioned/fake"
deschedulerconfig "github.com/koordinator-sh/koordinator/pkg/descheduler/apis/config"
"github.com/koordinator-sh/koordinator/pkg/descheduler/evictions"
evictutils "github.com/koordinator-sh/koordinator/pkg/descheduler/evictions/utils"
"github.com/koordinator-sh/koordinator/pkg/descheduler/framework"
"github.com/koordinator-sh/koordinator/pkg/descheduler/framework/plugins/kubernetes/defaultevictor"
frameworkruntime "github.com/koordinator-sh/koordinator/pkg/descheduler/framework/runtime"
Expand All @@ -63,8 +62,8 @@ func setupFakeDiscoveryWithPolicyResource(fake *coretesting.Fake) {
GroupVersion: policy.SchemeGroupVersion.String(),
APIResources: []metav1.APIResource{
{
Name: evictutils.EvictionSubResouceName,
Kind: evictutils.EvictionKind,
Name: util.EvictionSubResourceName,
Kind: util.EvictionKind,
},
},
},
Expand All @@ -77,8 +76,8 @@ func setupFakeDiscoveryWithPolicyResource(fake *coretesting.Fake) {
GroupVersion: "v1",
APIResources: []metav1.APIResource{
{
Name: evictutils.EvictionSubResouceName,
Kind: evictutils.EvictionKind,
Name: util.EvictionSubResourceName,
Kind: util.EvictionKind,
},
},
},
Expand Down
6 changes: 4 additions & 2 deletions pkg/koordlet/resmanager/resmanager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,10 @@ func setupFakeDiscoveryWithPolicyResource(fake *coretesting.Fake, groupVersion s
GroupVersion: "v1",
APIResources: []metav1.APIResource{
{
Name: util.EvictionSubResourceName,
Kind: util.EvictionKind,
Name: util.EvictionSubResourceName,
Kind: util.EvictionKind,
Group: util.EvictionGroupName,
Version: "v1",
},
},
},
Expand Down
48 changes: 35 additions & 13 deletions pkg/util/pod_evict.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ package util
import (
"context"
"fmt"
"strings"

"k8s.io/apimachinery/pkg/api/errors"

policyv1 "k8s.io/api/policy/v1"
policyv1beta1 "k8s.io/api/policy/v1beta1"
Expand Down Expand Up @@ -61,41 +64,60 @@ func EvictPodByVersion(ctx context.Context, kubernetes kubernetes.Interface, nam
return fmt.Errorf("not support evict version, %s", evictVersion)
}

func FindSupportedEvictVersion(client kubernetes.Interface) (groupVersion string, err error) {
func FindSupportedEvictVersion(client kubernetes.Interface) (version string, err error) {
var (
serverGroups *metav1.APIGroupList
resourceList *metav1.APIResourceList
foundPolicyGroup bool
preferredVersion string
groupVersion string
)
groupVersion, err = SupportEviction(client)
if err != nil {
return
}
if groupVersion == "" || !strings.Contains(groupVersion, "/") {
return
}
version = strings.Split(groupVersion, "/")[1]
return
}

func SupportEviction(client kubernetes.Interface) (string, error) {
var (
serverGroups *metav1.APIGroupList
resourceList *metav1.APIResourceList
foundPolicyGroup bool
preferredGroupVersion string
groupVersion string
err error
)
discoveryClient := client.Discovery()
serverGroups, err = discoveryClient.ServerGroups()
if serverGroups == nil || err != nil {
return
return groupVersion, err
}

for _, serverGroup := range serverGroups.Groups {
if serverGroup.Name == EvictionGroupName {
foundPolicyGroup = true
preferredVersion = serverGroup.PreferredVersion.Version
preferredGroupVersion = serverGroup.PreferredVersion.GroupVersion
break
}
}
if !foundPolicyGroup {
return
return groupVersion, err
}

resourceList, err = discoveryClient.ServerResourcesForGroupVersion("v1")
if err != nil {
return
if errors.IsNotFound(err) {
return groupVersion, nil
}
return groupVersion, err
}
for _, resource := range resourceList.APIResources {
if resource.Name == EvictionSubResourceName && resource.Kind == EvictionKind {
groupVersion = preferredVersion
return
groupVersion = resource.Group + "/" + resource.Version
return groupVersion, err
}
}

return
groupVersion = preferredGroupVersion
return groupVersion, err
}

0 comments on commit 1120b41

Please sign in to comment.