code: func makeEvent(nodeName, eventtype, reason, message string) *apiv1.Event {
  	const componentKubelet = "kubelet"
  	// NOTE(mtaufen): This is consistent with pkg/kubelet/kubelet.go. Even though setting the node
  	// name as the UID looks strange, it appears to be conventional for events sent by the Kubelet.
  	ref := apiv1.ObjectReference{
  		Kind:      "Node",
  		Name:      nodeName,
  		UID:       types.UID(nodeName),
  		Namespace: "",
  	}
  
  	t := metav1.Time{Time: time.Now()}
  	namespace := ref.Namespace
  	if namespace == "" {
  		namespace = metav1.NamespaceDefault
  	}
  	return &apiv1.Event{
  		ObjectMeta: metav1.ObjectMeta{
  			Name:      fmt.Sprintf("%v.%x", ref.Name, t.UnixNano()),
  			Namespace: namespace,
  		},
  		InvolvedObject: ref,
  		Reason:         reason,
  		Message:        message,
  		FirstTimestamp: t,
  		LastTimestamp:  t,
  		Count:          1,
  		Type:           eventtype,
  		Source:         apiv1.EventSource{Component: componentKubelet, Host: string(nodeName)},
  	}
  }
docs: // makeEvent constructs an event
  // similar to makeEvent in k8s.io/client-go/tools/record/event.go