mirror of https://github.com/k3s-io/k3s
let scheduler use client-go's client when initilaizer leaderelection
parent
56de7e702e
commit
016963b955
|
@ -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.
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue