code: func RunUpgradeControlPlane(flags *controlplaneUpgradeFlags) error {
  
  	client, err := getClient(flags.kubeConfigPath, flags.dryRun)
  	if err != nil {
  		return errors.Wrapf(err, "couldn't create a Kubernetes client from file %q", flags.kubeConfigPath)
  	}
  
  	waiter := apiclient.NewKubeWaiter(client, upgrade.UpgradeManifestTimeout, os.Stdout)
  
  	// Fetches the cluster configuration
  	cfg, err := configutil.FetchInitConfigurationFromCluster(client, os.Stdout, "upgrade", false)
  	if err != nil {
  		return errors.Wrap(err, "unable to fetch the kubeadm-config ConfigMap")
  	}
  
  	// Upgrade the control plane and etcd if installed on this node
  	fmt.Printf("[upgrade] Upgrading your Static Pod-hosted control plane instance to version %q...\n", cfg.KubernetesVersion)
  	if flags.dryRun {
  		return DryRunStaticPodUpgrade(cfg)
  	}
  
  	if err := PerformStaticPodUpgrade(client, waiter, cfg, flags.etcdUpgrade, flags.renewCerts); err != nil {
  		return errors.Wrap(err, "couldn't complete the static pod upgrade")
  	}
  
  	fmt.Println("[upgrade] The control plane instance for this node was successfully updated!")
  	return nil
  }
docs: // RunUpgradeControlPlane is executed when `kubeadm upgrade node controlplane` runs.