| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 
 | func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error {
 if cfgz, err := configz.New(ConfigzName); err == nil {
 cfgz.Set(c.ComponentConfig)
 } else {
 klog.Errorf("unable to register configz: %v", err)
 }
 
 
 var checks []healthz.HealthChecker
 var unsecuredMux *mux.PathRecorderMux
 
 run := func(ctx context.Context) {
 rootClientBuilder := controller.SimpleControllerClientBuilder{
 ClientConfig: c.Kubeconfig,
 }
 
 
 var clientBuilder controller.ControllerClientBuilder
 
 
 controllerContext, err := CreateControllerContext(c, rootClientBuilder, clientBuilder, ctx.Done())
 if err != nil {
 klog.Fatalf("error building controller context: %v", err)
 }
 saTokenControllerInitFunc := serviceAccountTokenControllerStarter{rootClientBuilder: rootClientBuilder}.startServiceAccountTokenController
 
 if err := StartControllers(controllerContext, saTokenControllerInitFunc, NewControllerInitializers(controllerContext.LoopMode), unsecuredMux); err != nil {
 klog.Fatalf("error starting controllers: %v", err)
 }
 
 
 controllerContext.InformerFactory.Start(controllerContext.Stop)
 controllerContext.ObjectOrMetadataInformerFactory.Start(controllerContext.Stop)
 close(controllerContext.InformersStarted)
 
 select {}
 }
 
 
 if !c.ComponentConfig.Generic.LeaderElection.LeaderElect {
 run(context.TODO())
 panic("unreachable")
 }
 
 
 id, err := os.Hostname()
 if err != nil {
 return err
 }
 id = id + "_" + string(uuid.NewUUID())
 
 rl, err := resourcelock.New(c.ComponentConfig.Generic.LeaderElection.ResourceLock,
 c.ComponentConfig.Generic.LeaderElection.ResourceNamespace,
 c.ComponentConfig.Generic.LeaderElection.ResourceName,
 c.LeaderElectionClient.CoreV1(),
 c.LeaderElectionClient.CoordinationV1(),
 resourcelock.ResourceLockConfig{
 Identity:      id,
 EventRecorder: c.EventRecorder,
 })
 if err != nil {
 klog.Fatalf("error creating lock: %v", err)
 }
 
 
 leaderelection.RunOrDie(context.TODO(), leaderelection.LeaderElectionConfig{
 Lock:          rl,
 LeaseDuration: c.ComponentConfig.Generic.LeaderElection.LeaseDuration.Duration,
 RenewDeadline: c.ComponentConfig.Generic.LeaderElection.RenewDeadline.Duration,
 RetryPeriod:   c.ComponentConfig.Generic.LeaderElection.RetryPeriod.Duration,
 Callbacks: leaderelection.LeaderCallbacks{
 
 OnStartedLeading: run,
 OnStoppedLeading: func() {
 klog.Fatalf("leaderelection lost")
 },
 },
 WatchDog: electionChecker,
 Name:     "kube-controller-manager",
 })
 panic("unreachable")
 }
 
 |