code: func (c *Controller) Start() {
  	if c.runner != nil {
  		return
  	}
  
  	// Reconcile during first run removing itself until server is ready.
  	endpointPorts := createEndpointPortSpec(c.PublicServicePort, "https", c.ExtraEndpointPorts)
  	if err := c.EndpointReconciler.RemoveEndpoints(kubernetesServiceName, c.PublicIP, endpointPorts); err != nil {
  		klog.Errorf("Unable to remove old endpoints from kubernetes service: %v", err)
  	}
  
  	repairClusterIPs := servicecontroller.NewRepair(c.ServiceClusterIPInterval, c.ServiceClient, c.EventClient, &c.ServiceClusterIPRange, c.ServiceClusterIPRegistry)
  	repairNodePorts := portallocatorcontroller.NewRepair(c.ServiceNodePortInterval, c.ServiceClient, c.EventClient, c.ServiceNodePortRange, c.ServiceNodePortRegistry)
  
  	// run all of the controllers once prior to returning from Start.
  	if err := repairClusterIPs.RunOnce(); err != nil {
  		// If we fail to repair cluster IPs apiserver is useless. We should restart and retry.
  		klog.Fatalf("Unable to perform initial IP allocation check: %v", err)
  	}
  	if err := repairNodePorts.RunOnce(); err != nil {
  		// If we fail to repair node ports apiserver is useless. We should restart and retry.
  		klog.Fatalf("Unable to perform initial service nodePort check: %v", err)
  	}
  
  	c.runner = async.NewRunner(c.RunKubernetesNamespaces, c.RunKubernetesService, repairClusterIPs.RunUntil, repairNodePorts.RunUntil)
  	c.runner.Start()
  }
docs: // Start begins the core controller loops that must exist for bootstrapping
  // a cluster.