From 3f95ddb714cadc6d9a739e1b6a64eca5ba6c15ae Mon Sep 17 00:00:00 2001 From: Chelsey Chen Date: Fri, 12 Jun 2020 16:13:17 -0400 Subject: [PATCH] Migrate kube-scheduler to use common fallback --- cmd/kube-scheduler/app/BUILD | 5 ----- cmd/kube-scheduler/app/config/BUILD | 3 --- cmd/kube-scheduler/app/config/config.go | 11 ++--------- cmd/kube-scheduler/app/options/BUILD | 2 +- cmd/kube-scheduler/app/options/options.go | 9 +++------ cmd/kube-scheduler/app/server.go | 20 +++----------------- 6 files changed, 9 insertions(+), 41 deletions(-) diff --git a/cmd/kube-scheduler/app/BUILD b/cmd/kube-scheduler/app/BUILD index cfbe557293a..8835958ed2f 100644 --- a/cmd/kube-scheduler/app/BUILD +++ b/cmd/kube-scheduler/app/BUILD @@ -19,8 +19,6 @@ go_library( "//pkg/scheduler/framework/v1alpha1:go_default_library", "//pkg/scheduler/metrics:go_default_library", "//pkg/scheduler/profile:go_default_library", - "//staging/src/k8s.io/api/core/v1:go_default_library", - "//staging/src/k8s.io/api/events/v1beta1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//staging/src/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library", "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", @@ -30,11 +28,8 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/mux:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/routes: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/tools/events:go_default_library", "//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library", - "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//staging/src/k8s.io/component-base/cli/flag:go_default_library", "//staging/src/k8s.io/component-base/cli/globalflag:go_default_library", "//staging/src/k8s.io/component-base/configz:go_default_library", diff --git a/cmd/kube-scheduler/app/config/BUILD b/cmd/kube-scheduler/app/config/BUILD index 7d4915b98e2..79ddd23c8a1 100644 --- a/cmd/kube-scheduler/app/config/BUILD +++ b/cmd/kube-scheduler/app/config/BUILD @@ -11,12 +11,9 @@ go_library( "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/informers/core/v1:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", - "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/tools/events:go_default_library", "//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library", - "//staging/src/k8s.io/client-go/tools/record:go_default_library", ], ) diff --git a/cmd/kube-scheduler/app/config/config.go b/cmd/kube-scheduler/app/config/config.go index a3d5932dca9..dc85e6ab6eb 100644 --- a/cmd/kube-scheduler/app/config/config.go +++ b/cmd/kube-scheduler/app/config/config.go @@ -21,12 +21,9 @@ import ( "k8s.io/client-go/informers" coreinformers "k8s.io/client-go/informers/core/v1" clientset "k8s.io/client-go/kubernetes" - v1core "k8s.io/client-go/kubernetes/typed/core/v1" - "k8s.io/client-go/kubernetes/typed/events/v1beta1" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/events" "k8s.io/client-go/tools/leaderelection" - "k8s.io/client-go/tools/record" kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config" ) @@ -48,12 +45,8 @@ type Config struct { InformerFactory informers.SharedInformerFactory PodInformer coreinformers.PodInformer - // TODO: Remove the following after fully migrating to the new events api. - CoreEventClient v1core.EventsGetter - CoreBroadcaster record.EventBroadcaster - - EventClient v1beta1.EventsGetter - Broadcaster events.EventBroadcaster + //lint:ignore SA1019 this deprecated field still needs to be used for now. It will be removed once the migration is done. + EventBroadcaster events.EventBroadcasterAdapter // LeaderElection is optional. LeaderElection *leaderelection.LeaderElectionConfig diff --git a/cmd/kube-scheduler/app/options/BUILD b/cmd/kube-scheduler/app/options/BUILD index e2efd050a4a..8abf738cd62 100644 --- a/cmd/kube-scheduler/app/options/BUILD +++ b/cmd/kube-scheduler/app/options/BUILD @@ -28,10 +28,10 @@ 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/rest:go_default_library", "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//staging/src/k8s.io/client-go/tools/events:go_default_library", "//staging/src/k8s.io/client-go/tools/leaderelection:go_default_library", "//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library", "//staging/src/k8s.io/client-go/tools/record:go_default_library", diff --git a/cmd/kube-scheduler/app/options/options.go b/cmd/kube-scheduler/app/options/options.go index 7f0c2a6e462..7dc1d31d0e4 100644 --- a/cmd/kube-scheduler/app/options/options.go +++ b/cmd/kube-scheduler/app/options/options.go @@ -30,10 +30,10 @@ 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" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" + "k8s.io/client-go/tools/events" "k8s.io/client-go/tools/leaderelection" "k8s.io/client-go/tools/leaderelection/resourcelock" "k8s.io/client-go/tools/record" @@ -247,13 +247,13 @@ func (o *Options) Config() (*schedulerappconfig.Config, error) { return nil, err } - coreBroadcaster := record.NewBroadcaster() + c.EventBroadcaster = events.NewEventBroadcasterAdapter(eventClient) // Set up leader election if enabled. var leaderElectionConfig *leaderelection.LeaderElectionConfig if c.ComponentConfig.LeaderElection.LeaderElect { // Use the scheduler name in the first profile to record leader election. - coreRecorder := coreBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: c.ComponentConfig.Profiles[0].SchedulerName}) + coreRecorder := c.EventBroadcaster.DeprecatedNewLegacyRecorder(c.ComponentConfig.Profiles[0].SchedulerName) leaderElectionConfig, err = makeLeaderElectionConfig(c.ComponentConfig.LeaderElection, leaderElectionClient, coreRecorder) if err != nil { return nil, err @@ -263,9 +263,6 @@ func (o *Options) Config() (*schedulerappconfig.Config, error) { c.Client = client c.InformerFactory = informers.NewSharedInformerFactory(client, 0) c.PodInformer = scheduler.NewPodInformer(client, 0) - c.EventClient = eventClient.EventsV1beta1() - c.CoreEventClient = eventClient.CoreV1() - c.CoreBroadcaster = coreBroadcaster c.LeaderElection = leaderElectionConfig return c, nil diff --git a/cmd/kube-scheduler/app/server.go b/cmd/kube-scheduler/app/server.go index 3694ac803b6..84e349e33c2 100644 --- a/cmd/kube-scheduler/app/server.go +++ b/cmd/kube-scheduler/app/server.go @@ -27,8 +27,6 @@ import ( "github.com/spf13/cobra" - v1 "k8s.io/api/core/v1" - eventsv1beta1 "k8s.io/api/events/v1beta1" utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apiserver/pkg/authentication/authenticator" "k8s.io/apiserver/pkg/authorization/authorizer" @@ -38,11 +36,8 @@ import ( "k8s.io/apiserver/pkg/server/healthz" "k8s.io/apiserver/pkg/server/mux" "k8s.io/apiserver/pkg/server/routes" - "k8s.io/client-go/kubernetes/scheme" - corev1 "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/tools/events" "k8s.io/client-go/tools/leaderelection" - "k8s.io/client-go/tools/record" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/cli/globalflag" "k8s.io/component-base/configz" @@ -158,12 +153,8 @@ func Run(ctx context.Context, cc *schedulerserverconfig.CompletedConfig, sched * } // Prepare the event broadcaster. - if cc.Broadcaster != nil && cc.EventClient != nil { - cc.Broadcaster.StartRecordingToSink(ctx.Done()) - } - if cc.CoreBroadcaster != nil && cc.CoreEventClient != nil { - cc.CoreBroadcaster.StartRecordingToSink(&corev1.EventSinkImpl{Interface: cc.CoreEventClient.Events("")}) - } + cc.EventBroadcaster.StartRecordingToSink(ctx.Done()) + // Setup healthz checks. var checks []healthz.HealthChecker if cc.ComponentConfig.LeaderElection.LeaderElect { @@ -287,13 +278,8 @@ func newHealthzHandler(config *kubeschedulerconfig.KubeSchedulerConfiguration, s } func getRecorderFactory(cc *schedulerserverconfig.CompletedConfig) profile.RecorderFactory { - if _, err := cc.Client.Discovery().ServerResourcesForGroupVersion(eventsv1beta1.SchemeGroupVersion.String()); err == nil { - cc.Broadcaster = events.NewBroadcaster(&events.EventSinkImpl{Interface: cc.EventClient.Events("")}) - return profile.NewRecorderFactory(cc.Broadcaster) - } return func(name string) events.EventRecorder { - r := cc.CoreBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: name}) - return record.NewEventRecorderAdapter(r) + return cc.EventBroadcaster.NewRecorder(name) } }