code: func GetEtcdPodSpec(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmapi.APIEndpoint, nodeName string, initialCluster []etcdutil.Member) v1.Pod {
  	pathType := v1.HostPathDirectoryOrCreate
  	etcdMounts := map[string]v1.Volume{
  		etcdVolumeName:  staticpodutil.NewVolume(etcdVolumeName, cfg.Etcd.Local.DataDir, &pathType),
  		certsVolumeName: staticpodutil.NewVolume(certsVolumeName, cfg.CertificatesDir+"/etcd", &pathType),
  	}
  	return staticpodutil.ComponentPod(v1.Container{
  		Name:            kubeadmconstants.Etcd,
  		Command:         getEtcdCommand(cfg, endpoint, nodeName, initialCluster),
  		Image:           images.GetEtcdImage(cfg),
  		ImagePullPolicy: v1.PullIfNotPresent,
  		// Mount the etcd datadir path read-write so etcd can store data in a more persistent manner
  		VolumeMounts: []v1.VolumeMount{
  			staticpodutil.NewVolumeMount(etcdVolumeName, cfg.Etcd.Local.DataDir, false),
  			staticpodutil.NewVolumeMount(certsVolumeName, cfg.CertificatesDir+"/etcd", false),
  		},
  		LivenessProbe: staticpodutil.EtcdProbe(
  			&cfg.Etcd, kubeadmconstants.EtcdListenClientPort, cfg.CertificatesDir,
  			kubeadmconstants.EtcdCACertName, kubeadmconstants.EtcdHealthcheckClientCertName, kubeadmconstants.EtcdHealthcheckClientKeyName,
  		),
  	}, etcdMounts)
  }
docs: // GetEtcdPodSpec returns the etcd static Pod actualized to the context of the current configuration
  // NB. GetEtcdPodSpec methods holds the information about how kubeadm creates etcd static pod manifests.