code: func CreateLocalEtcdStaticPodManifestFile(manifestDir string, nodeName string, cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmapi.APIEndpoint) error {
  	if cfg.Etcd.External != nil {
  		return errors.New("etcd static pod manifest cannot be generated for cluster using external etcd")
  	}
  	// gets etcd StaticPodSpec
  	spec := GetEtcdPodSpec(cfg, endpoint, nodeName, []etcdutil.Member{})
  
  	// writes etcd StaticPod to disk
  	if err := staticpodutil.WriteStaticPodToDisk(kubeadmconstants.Etcd, manifestDir, spec); err != nil {
  		return err
  	}
  
  	klog.V(1).Infof("[etcd] wrote Static Pod manifest for a local etcd member to %q\n", kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.Etcd, manifestDir))
  	return nil
  }
docs: // CreateLocalEtcdStaticPodManifestFile will write local etcd static pod manifest file.
  // This function is used by init - when the etcd cluster is empty - or by kubeadm
  // upgrade - when the etcd cluster is already up and running (and the --initial-cluster flag have no impact)