code: func (nc *Controller) reconcileNodeLabels(nodeName string) error {
  	node, err := nc.nodeLister.Get(nodeName)
  	if err != nil {
  		// If node not found, just ignore it.
  		if apierrors.IsNotFound(err) {
  			return nil
  		}
  		return err
  	}
  
  	if node.Labels == nil {
  		// Nothing to reconcile.
  		return nil
  	}
  
  	labelsToUpdate := map[string]string{}
  	for _, r := range labelReconcileInfo {
  		primaryValue, primaryExists := node.Labels[r.primaryKey]
  		secondaryValue, secondaryExists := node.Labels[r.secondaryKey]
  
  		if !primaryExists {
  			// The primary label key does not exist. This should not happen
  			// within our supported version skew range, when no external
  			// components/factors modifying the node object. Ignore this case.
  			continue
  		}
  		if secondaryExists && primaryValue != secondaryValue {
  			// Secondary label exists, but not consistent with the primary
  			// label. Need to reconcile.
  			labelsToUpdate[r.secondaryKey] = primaryValue
  
  		} else if !secondaryExists && r.ensureSecondaryExists {
  			// Apply secondary label based on primary label.
  			labelsToUpdate[r.secondaryKey] = primaryValue
  		}
  	}
  
  	if len(labelsToUpdate) == 0 {
  		return nil
  	}
  	if !nodeutil.AddOrUpdateLabelsOnNode(nc.kubeClient, labelsToUpdate, node) {
  		return fmt.Errorf("failed update labels for node %+v", node)
  	}
  	return nil
  }
docs: // reconcileNodeLabels reconciles node labels.