code: func (kl *Kubelet) syncNodeStatus() {
  	kl.syncNodeStatusMux.Lock()
  	defer kl.syncNodeStatusMux.Unlock()
  
  	if kl.kubeClient == nil || kl.heartbeatClient == nil {
  		return
  	}
  	if kl.registerNode {
  		// This will exit immediately if it doesn't need to do anything.
  		kl.registerWithAPIServer()
  	}
  	if err := kl.updateNodeStatus(); err != nil {
  		klog.Errorf("Unable to update node status: %v", err)
  	}
  }
docs: // syncNodeStatus should be called periodically from a goroutine.
  // It synchronizes node status to master if there is any change or enough time
  // passed from the last sync, registering the kubelet first if necessary.