let scheduler use client-go's client when initilaizer leaderelection

pull/6/head
Chao Xu 2017-07-07 19:03:20 -07:00
parent 56de7e702e
commit 016963b955
2 changed files with 12 additions and 6 deletions

View File

@ -28,6 +28,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/kubernetes"
v1core "k8s.io/client-go/kubernetes/typed/core/v1" v1core "k8s.io/client-go/kubernetes/typed/core/v1"
restclient "k8s.io/client-go/rest" 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}) 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) kubeconfig, err := clientcmd.BuildConfigFromFlags(s.Master, s.Kubeconfig)
if err != nil { 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 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")) cli, err := clientset.NewForConfig(restclient.AddUserAgent(kubeconfig, "leader-election"))
if err != nil { 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. // CreateScheduler encapsulates the entire creation of a runnable scheduler.

View File

@ -65,7 +65,7 @@ through the API as necessary.`,
// Run runs the specified SchedulerServer. This should never exit. // Run runs the specified SchedulerServer. This should never exit.
func Run(s *options.SchedulerServer) error { func Run(s *options.SchedulerServer) error {
kubecli, err := createClient(s) kubecli, clientgoCli, err := createClient(s)
if err != nil { if err != nil {
return fmt.Errorf("unable to create kube client: %v", err) 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, rl, err := resourcelock.New(s.LeaderElection.ResourceLock,
s.LockObjectNamespace, s.LockObjectNamespace,
s.LockObjectName, s.LockObjectName,
kubecli, clientgoCli,
resourcelock.ResourceLockConfig{ resourcelock.ResourceLockConfig{
Identity: id, Identity: id,
EventRecorder: recorder, EventRecorder: recorder,