From 016963b955e8cfdb941c975eff315c993261101c Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Fri, 7 Jul 2017 19:03:20 -0700 Subject: [PATCH] let scheduler use client-go's client when initilaizer leaderelection --- plugin/cmd/kube-scheduler/app/configurator.go | 14 ++++++++++---- plugin/cmd/kube-scheduler/app/server.go | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/plugin/cmd/kube-scheduler/app/configurator.go b/plugin/cmd/kube-scheduler/app/configurator.go index 7b0871cb30..7acb0ba98b 100644 --- a/plugin/cmd/kube-scheduler/app/configurator.go +++ b/plugin/cmd/kube-scheduler/app/configurator.go @@ -28,6 +28,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes" v1core "k8s.io/client-go/kubernetes/typed/core/v1" restclient "k8s.io/client-go/rest" @@ -54,10 +55,11 @@ func createRecorder(kubecli *clientset.Clientset, s *options.SchedulerServer) re return eventBroadcaster.NewRecorder(api.Scheme, clientv1.EventSource{Component: s.SchedulerName}) } -func createClient(s *options.SchedulerServer) (*clientset.Clientset, error) { +// TODO: convert scheduler to only use client-go's clientset. +func createClient(s *options.SchedulerServer) (*clientset.Clientset, *kubernetes.Clientset, error) { kubeconfig, err := clientcmd.BuildConfigFromFlags(s.Master, s.Kubeconfig) if err != nil { - return nil, fmt.Errorf("unable to build config from flags: %v", err) + return nil, nil, fmt.Errorf("unable to build config from flags: %v", err) } kubeconfig.ContentType = s.ContentType @@ -67,9 +69,13 @@ func createClient(s *options.SchedulerServer) (*clientset.Clientset, error) { cli, err := clientset.NewForConfig(restclient.AddUserAgent(kubeconfig, "leader-election")) if err != nil { - return nil, fmt.Errorf("invalid API configuration: %v", err) + return nil, nil, fmt.Errorf("invalid API configuration: %v", err) } - return cli, nil + clientgoCli, err := kubernetes.NewForConfig(restclient.AddUserAgent(kubeconfig, "leader-election")) + if err != nil { + return nil, nil, fmt.Errorf("invalid API configuration: %v", err) + } + return cli, clientgoCli, nil } // CreateScheduler encapsulates the entire creation of a runnable scheduler. diff --git a/plugin/cmd/kube-scheduler/app/server.go b/plugin/cmd/kube-scheduler/app/server.go index 06f7708bad..8e369931fb 100644 --- a/plugin/cmd/kube-scheduler/app/server.go +++ b/plugin/cmd/kube-scheduler/app/server.go @@ -65,7 +65,7 @@ through the API as necessary.`, // Run runs the specified SchedulerServer. This should never exit. func Run(s *options.SchedulerServer) error { - kubecli, err := createClient(s) + kubecli, clientgoCli, err := createClient(s) if err != nil { return fmt.Errorf("unable to create kube client: %v", err) } @@ -121,7 +121,7 @@ func Run(s *options.SchedulerServer) error { rl, err := resourcelock.New(s.LeaderElection.ResourceLock, s.LockObjectNamespace, s.LockObjectName, - kubecli, + clientgoCli, resourcelock.ResourceLockConfig{ Identity: id, EventRecorder: recorder,