mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
User separate client for leader election in scheduler
This commit is contained in:
parent
1d4e1d2dc2
commit
234e20b620
@ -56,22 +56,22 @@ func createRecorder(kubecli *clientset.Clientset, s *options.SchedulerServer) re
|
|||||||
return eventBroadcaster.NewRecorder(api.Scheme, v1.EventSource{Component: s.SchedulerName})
|
return eventBroadcaster.NewRecorder(api.Scheme, v1.EventSource{Component: s.SchedulerName})
|
||||||
}
|
}
|
||||||
|
|
||||||
func createClient(s *options.SchedulerServer) (*clientset.Clientset, error) {
|
func createClients(s *options.SchedulerServer) (*clientset.Clientset, *clientset.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
|
||||||
// Override kubeconfig qps/burst settings from flags
|
// Override kubeconfig qps/burst settings from flags
|
||||||
kubeconfig.QPS = s.KubeAPIQPS
|
kubeconfig.QPS = s.KubeAPIQPS
|
||||||
kubeconfig.Burst = int(s.KubeAPIBurst)
|
kubeconfig.Burst = int(s.KubeAPIBurst)
|
||||||
|
kubeClient, err := clientset.NewForConfig(restclient.AddUserAgent(kubeconfig, "scheduler"))
|
||||||
cli, err := clientset.NewForConfig(restclient.AddUserAgent(kubeconfig, "leader-election"))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("invalid API configuration: %v", err)
|
glog.Fatalf("Invalid API configuration: %v", err)
|
||||||
}
|
}
|
||||||
return cli, nil
|
leaderElectionClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "leader-election"))
|
||||||
|
return kubeClient, leaderElectionClient, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateScheduler encapsulates the entire creation of a runnable scheduler.
|
// CreateScheduler encapsulates the entire creation of a runnable scheduler.
|
||||||
|
@ -70,23 +70,23 @@ func Run(s *options.SchedulerServer) error {
|
|||||||
// To help debugging, immediately log version
|
// To help debugging, immediately log version
|
||||||
glog.Infof("Version: %+v", version.Get())
|
glog.Infof("Version: %+v", version.Get())
|
||||||
|
|
||||||
kubecli, err := createClient(s)
|
kubeClient, leaderElectionClient, err := createClients(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)
|
||||||
}
|
}
|
||||||
|
|
||||||
recorder := createRecorder(kubecli, s)
|
recorder := createRecorder(kubeClient, s)
|
||||||
|
|
||||||
informerFactory := informers.NewSharedInformerFactory(kubecli, 0)
|
informerFactory := informers.NewSharedInformerFactory(kubeClient, 0)
|
||||||
// cache only non-terminal pods
|
// cache only non-terminal pods
|
||||||
podInformer := factory.NewPodInformer(kubecli, 0)
|
podInformer := factory.NewPodInformer(kubeClient, 0)
|
||||||
|
|
||||||
// Apply algorithms based on feature gates.
|
// Apply algorithms based on feature gates.
|
||||||
algorithmprovider.ApplyFeatureGates()
|
algorithmprovider.ApplyFeatureGates()
|
||||||
|
|
||||||
sched, err := CreateScheduler(
|
sched, err := CreateScheduler(
|
||||||
s,
|
s,
|
||||||
kubecli,
|
kubeClient,
|
||||||
informerFactory.Core().V1().Nodes(),
|
informerFactory.Core().V1().Nodes(),
|
||||||
podInformer,
|
podInformer,
|
||||||
informerFactory.Core().V1().PersistentVolumes(),
|
informerFactory.Core().V1().PersistentVolumes(),
|
||||||
@ -131,7 +131,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.CoreV1(),
|
leaderElectionClient.CoreV1(),
|
||||||
resourcelock.ResourceLockConfig{
|
resourcelock.ResourceLockConfig{
|
||||||
Identity: id,
|
Identity: id,
|
||||||
EventRecorder: recorder,
|
EventRecorder: recorder,
|
||||||
|
Loading…
Reference in New Issue
Block a user