From 214ea1a9d3f1d02cf396e175fb62d42b15ae85da Mon Sep 17 00:00:00 2001 From: Yecheng Fu Date: Mon, 18 Mar 2019 13:54:19 +0800 Subject: [PATCH] Update scheduler to use new volume scheduling library To fix scheme issue, use k8s.io/client-go/kubernetes/scheme instead of legacyscheme. --- cmd/kube-scheduler/app/options/BUILD | 2 +- cmd/kube-scheduler/app/options/options.go | 4 +-- pkg/scheduler/BUILD | 4 +-- pkg/scheduler/metrics/BUILD | 2 +- pkg/scheduler/metrics/metrics.go | 4 +-- pkg/scheduler/scheduler_test.go | 36 ++++++++++----------- pkg/scheduler/volumebinder/BUILD | 2 +- pkg/scheduler/volumebinder/volume_binder.go | 10 +++--- 8 files changed, 32 insertions(+), 32 deletions(-) diff --git a/cmd/kube-scheduler/app/options/BUILD b/cmd/kube-scheduler/app/options/BUILD index a6cb174dd19..13d4e2de5cd 100644 --- a/cmd/kube-scheduler/app/options/BUILD +++ b/cmd/kube-scheduler/app/options/BUILD @@ -12,7 +12,6 @@ go_library( visibility = ["//visibility:public"], deps = [ "//cmd/kube-scheduler/app/config:go_default_library", - "//pkg/api/legacyscheme:go_default_library", "//pkg/client/leaderelectionconfig:go_default_library", "//pkg/master/ports:go_default_library", "//pkg/scheduler/apis/config:go_default_library", @@ -29,6 +28,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", diff --git a/cmd/kube-scheduler/app/options/options.go b/cmd/kube-scheduler/app/options/options.go index 871ff83bfca..f645b3c4d13 100644 --- a/cmd/kube-scheduler/app/options/options.go +++ b/cmd/kube-scheduler/app/options/options.go @@ -30,6 +30,7 @@ import ( utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/informers" clientset "k8s.io/client-go/kubernetes" + "k8s.io/client-go/kubernetes/scheme" v1core "k8s.io/client-go/kubernetes/typed/core/v1" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" @@ -42,7 +43,6 @@ import ( "k8s.io/klog" kubeschedulerconfigv1alpha1 "k8s.io/kube-scheduler/config/v1alpha1" schedulerappconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config" - "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/client/leaderelectionconfig" "k8s.io/kubernetes/pkg/master/ports" kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config" @@ -238,7 +238,7 @@ func (o *Options) Config() (*schedulerappconfig.Config, error) { // Prepare event clients. eventBroadcaster := record.NewBroadcaster() - recorder := eventBroadcaster.NewRecorder(legacyscheme.Scheme, corev1.EventSource{Component: c.ComponentConfig.SchedulerName}) + recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: c.ComponentConfig.SchedulerName}) // Set up leader election if enabled. var leaderElectionConfig *leaderelection.LeaderElectionConfig diff --git a/pkg/scheduler/BUILD b/pkg/scheduler/BUILD index 3fe23339be8..efc2308e923 100644 --- a/pkg/scheduler/BUILD +++ b/pkg/scheduler/BUILD @@ -49,8 +49,7 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//pkg/api/legacyscheme:go_default_library", - "//pkg/controller/volume/persistentvolume:go_default_library", + "//pkg/controller/volume/scheduling:go_default_library", "//pkg/scheduler/algorithm:go_default_library", "//pkg/scheduler/algorithm/predicates:go_default_library", "//pkg/scheduler/algorithm/priorities:go_default_library", @@ -75,6 +74,7 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", + "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/tools/record:go_default_library", diff --git a/pkg/scheduler/metrics/BUILD b/pkg/scheduler/metrics/BUILD index e5e540cc3f8..41351c5042d 100644 --- a/pkg/scheduler/metrics/BUILD +++ b/pkg/scheduler/metrics/BUILD @@ -10,7 +10,7 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/scheduler/metrics", deps = [ - "//pkg/controller/volume/persistentvolume:go_default_library", + "//pkg/controller/volume/scheduling:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", ], ) diff --git a/pkg/scheduler/metrics/metrics.go b/pkg/scheduler/metrics/metrics.go index b921d8db8d0..863f4dbab13 100644 --- a/pkg/scheduler/metrics/metrics.go +++ b/pkg/scheduler/metrics/metrics.go @@ -21,7 +21,7 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" - "k8s.io/kubernetes/pkg/controller/volume/persistentvolume" + volumescheduling "k8s.io/kubernetes/pkg/controller/volume/scheduling" ) const ( @@ -234,7 +234,7 @@ func Register() { prometheus.MustRegister(metric) } - persistentvolume.RegisterVolumeSchedulingMetrics() + volumescheduling.RegisterVolumeSchedulingMetrics() }) } diff --git a/pkg/scheduler/scheduler_test.go b/pkg/scheduler/scheduler_test.go index e458020b575..bdd4b054c63 100644 --- a/pkg/scheduler/scheduler_test.go +++ b/pkg/scheduler/scheduler_test.go @@ -37,11 +37,11 @@ import ( "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/informers" clientsetfake "k8s.io/client-go/kubernetes/fake" + "k8s.io/client-go/kubernetes/scheme" corelister "k8s.io/client-go/listers/core/v1" clientcache "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/record" - "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/controller/volume/persistentvolume" + volumescheduling "k8s.io/kubernetes/pkg/controller/volume/scheduling" "k8s.io/kubernetes/pkg/scheduler/algorithm" "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates" "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities" @@ -194,7 +194,7 @@ func TestSchedulerCreation(t *testing.T) { informerFactory.Core().V1().Services(), informerFactory.Policy().V1beta1().PodDisruptionBudgets(), informerFactory.Storage().V1().StorageClasses(), - eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: "scheduler"}), + eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "scheduler"}), kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &testSource}, stopCh, EmptyPluginRegistry, @@ -302,8 +302,8 @@ func TestScheduler(t *testing.T) { return item.sendPod }, Framework: fwk, - Recorder: eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: "scheduler"}), - VolumeBinder: volumebinder.NewFakeVolumeBinder(&persistentvolume.FakeVolumeBinderConfig{AllBound: true}), + Recorder: eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "scheduler"}), + VolumeBinder: volumebinder.NewFakeVolumeBinder(&volumescheduling.FakeVolumeBinderConfig{AllBound: true}), }) called := make(chan struct{}) events := eventBroadcaster.StartEventWatcher(func(e *v1.Event) { @@ -679,7 +679,7 @@ func setupTestScheduler(queuedPodStore *clientcache.FIFO, scache internalcache.C PodConditionUpdater: fakePodConditionUpdater{}, PodPreemptor: fakePodPreemptor{}, Framework: framework, - VolumeBinder: volumebinder.NewFakeVolumeBinder(&persistentvolume.FakeVolumeBinderConfig{AllBound: true}), + VolumeBinder: volumebinder.NewFakeVolumeBinder(&volumescheduling.FakeVolumeBinderConfig{AllBound: true}), } if recorder != nil { @@ -736,7 +736,7 @@ func setupTestSchedulerLongBindingWithRetry(queuedPodStore *clientcache.FIFO, sc PodPreemptor: fakePodPreemptor{}, StopEverything: stop, Framework: framework, - VolumeBinder: volumebinder.NewFakeVolumeBinder(&persistentvolume.FakeVolumeBinderConfig{AllBound: true}), + VolumeBinder: volumebinder.NewFakeVolumeBinder(&volumescheduling.FakeVolumeBinderConfig{AllBound: true}), }) return sched, bindingChan @@ -760,7 +760,7 @@ func setupTestSchedulerWithVolumeBinding(fakeVolumeBinder *volumebinder.VolumeBi predicates.CheckVolumeBindingPred: predicates.NewVolumeBindingPredicate(fakeVolumeBinder), } - recorder := broadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: "scheduler"}) + recorder := broadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "scheduler"}) s, bindingChan, errChan := setupTestScheduler(queuedPodStore, scache, informerFactory, predicateMap, recorder) informerFactory.Start(stop) informerFactory.WaitForCacheSync(stop) @@ -794,11 +794,11 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { expectAssumeCalled bool expectBindCalled bool eventReason string - volumeBinderConfig *persistentvolume.FakeVolumeBinderConfig + volumeBinderConfig *volumescheduling.FakeVolumeBinderConfig }{ { name: "all bound", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ AllBound: true, FindUnboundSatsified: true, FindBoundSatsified: true, @@ -809,7 +809,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { }, { name: "bound/invalid pv affinity", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ AllBound: true, FindUnboundSatsified: true, FindBoundSatsified: false, @@ -819,7 +819,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { }, { name: "unbound/no matches", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ FindUnboundSatsified: false, FindBoundSatsified: true, }, @@ -828,7 +828,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { }, { name: "bound and unbound unsatisfied", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ FindUnboundSatsified: false, FindBoundSatsified: false, }, @@ -837,7 +837,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { }, { name: "unbound/found matches/bind succeeds", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ FindUnboundSatsified: true, FindBoundSatsified: true, }, @@ -848,7 +848,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { }, { name: "predicate error", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ FindErr: findErr, }, eventReason: "FailedScheduling", @@ -856,7 +856,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { }, { name: "assume error", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ FindUnboundSatsified: true, FindBoundSatsified: true, AssumeErr: assumeErr, @@ -867,7 +867,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { }, { name: "bind error", - volumeBinderConfig: &persistentvolume.FakeVolumeBinderConfig{ + volumeBinderConfig: &volumescheduling.FakeVolumeBinderConfig{ FindUnboundSatsified: true, FindBoundSatsified: true, BindErr: bindErr, @@ -883,7 +883,7 @@ func TestSchedulerWithVolumeBinding(t *testing.T) { t.Run(item.name, func(t *testing.T) { stop := make(chan struct{}) fakeVolumeBinder := volumebinder.NewFakeVolumeBinder(item.volumeBinderConfig) - internalBinder, ok := fakeVolumeBinder.Binder.(*persistentvolume.FakeVolumeBinder) + internalBinder, ok := fakeVolumeBinder.Binder.(*volumescheduling.FakeVolumeBinder) if !ok { t.Fatalf("Failed to get fake volume binder") } diff --git a/pkg/scheduler/volumebinder/BUILD b/pkg/scheduler/volumebinder/BUILD index 518178377a5..e1744bb02c5 100644 --- a/pkg/scheduler/volumebinder/BUILD +++ b/pkg/scheduler/volumebinder/BUILD @@ -6,7 +6,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/scheduler/volumebinder", visibility = ["//visibility:public"], deps = [ - "//pkg/controller/volume/persistentvolume:go_default_library", + "//pkg/controller/volume/scheduling:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/client-go/informers/core/v1:go_default_library", "//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library", diff --git a/pkg/scheduler/volumebinder/volume_binder.go b/pkg/scheduler/volumebinder/volume_binder.go index 53e3488a8c1..fdc3b3e32d1 100644 --- a/pkg/scheduler/volumebinder/volume_binder.go +++ b/pkg/scheduler/volumebinder/volume_binder.go @@ -23,12 +23,12 @@ import ( coreinformers "k8s.io/client-go/informers/core/v1" storageinformers "k8s.io/client-go/informers/storage/v1" clientset "k8s.io/client-go/kubernetes" - "k8s.io/kubernetes/pkg/controller/volume/persistentvolume" + volumescheduling "k8s.io/kubernetes/pkg/controller/volume/scheduling" ) // VolumeBinder sets up the volume binding library type VolumeBinder struct { - Binder persistentvolume.SchedulerVolumeBinder + Binder volumescheduling.SchedulerVolumeBinder } // NewVolumeBinder sets up the volume binding library and binding queue @@ -41,14 +41,14 @@ func NewVolumeBinder( bindTimeout time.Duration) *VolumeBinder { return &VolumeBinder{ - Binder: persistentvolume.NewVolumeBinder(client, nodeInformer, pvcInformer, pvInformer, storageClassInformer, bindTimeout), + Binder: volumescheduling.NewVolumeBinder(client, nodeInformer, pvcInformer, pvInformer, storageClassInformer, bindTimeout), } } // NewFakeVolumeBinder sets up a fake volume binder and binding queue -func NewFakeVolumeBinder(config *persistentvolume.FakeVolumeBinderConfig) *VolumeBinder { +func NewFakeVolumeBinder(config *volumescheduling.FakeVolumeBinderConfig) *VolumeBinder { return &VolumeBinder{ - Binder: persistentvolume.NewFakeVolumeBinder(config), + Binder: volumescheduling.NewFakeVolumeBinder(config), } }