code: func restartForNewConfig(eventClient v1core.EventsGetter, nodeName string, source checkpoint.RemoteConfigSource) {
  	message := LocalEventMessage
  	if source != nil {
  		message = fmt.Sprintf(RemoteEventMessageFmt, source.APIPath(), source.UID(), source.ResourceVersion(), source.KubeletFilename())
  	}
  	// we directly log and send the event, instead of using the event recorder,
  	// because the event recorder won't flush its queue before we exit (we'd lose the event)
  	event := makeEvent(nodeName, apiv1.EventTypeNormal, KubeletConfigChangedEventReason, message)
  	klog.V(3).Infof("Event(%#v): type: '%v' reason: '%v' %v", event.InvolvedObject, event.Type, event.Reason, event.Message)
  	if _, err := eventClient.Events(apiv1.NamespaceDefault).Create(event); err != nil {
  		utillog.Errorf("failed to send event, error: %v", err)
  	}
  	utillog.Infof(message)
  	os.Exit(0)
  }
docs: // restartForNewConfig presumes the Kubelet is managed by a babysitter, e.g. systemd
  // It will send an event before exiting.