code: func NewCmdUpgradeControlPlane() *cobra.Command {
  
  	flags := &controlplaneUpgradeFlags{
  		kubeConfigPath:   constants.GetKubeletKubeConfigPath(),
  		advertiseAddress: "",
  		etcdUpgrade:      true,
  		renewCerts:       true,
  		dryRun:           false,
  	}
  
  	cmd := &cobra.Command{
  		Use:     "experimental-control-plane",
  		Short:   "Upgrade the control plane instance deployed on this node. IMPORTANT. This command should be executed after executing `kubeadm upgrade apply` on another control plane instance",
  		Long:    upgradeNodeConfigLongDesc,
  		Example: upgradeNodeConfigExample,
  		Run: func(cmd *cobra.Command, args []string) {
  
  			if flags.nodeName == "" {
  				klog.V(1).Infoln("[upgrade] found NodeName empty; considered OS hostname as NodeName")
  			}
  			nodeName, err := node.GetHostname(flags.nodeName)
  			if err != nil {
  				kubeadmutil.CheckErr(err)
  			}
  			flags.nodeName = nodeName
  
  			if flags.advertiseAddress == "" {
  				ip, err := configutil.ChooseAPIServerBindAddress(nil)
  				if err != nil {
  					kubeadmutil.CheckErr(err)
  					return
  				}
  
  				flags.advertiseAddress = ip.String()
  			}
  
  			err = RunUpgradeControlPlane(flags)
  			kubeadmutil.CheckErr(err)
  		},
  	}
  
  	options.AddKubeConfigFlag(cmd.Flags(), &flags.kubeConfigPath)
  	cmd.Flags().BoolVar(&flags.dryRun, options.DryRun, flags.dryRun, "Do not change any state, just output the actions that would be performed.")
  	cmd.Flags().BoolVar(&flags.etcdUpgrade, "etcd-upgrade", flags.etcdUpgrade, "Perform the upgrade of etcd.")
  	cmd.Flags().BoolVar(&flags.renewCerts, "certificate-renewal", flags.renewCerts, "Perform the renewal of certificates used by component changed during upgrades.")
  	return cmd
  }
docs: // NewCmdUpgradeControlPlane returns the cobra.Command for upgrading the controlplane instance on this node