From d9a5a04fa3e25481a9fe43dae196ef5c9c344025 Mon Sep 17 00:00:00 2001 From: Xianglin Gao Date: Wed, 4 Jul 2018 14:21:50 +0800 Subject: [PATCH] print required flags when running kubeadm upgrade plan Signed-off-by: Xianglin Gao --- cmd/kubeadm/app/cmd/upgrade/plan.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/cmd/kubeadm/app/cmd/upgrade/plan.go b/cmd/kubeadm/app/cmd/upgrade/plan.go index 896e8ba479f..aa2b20a9b18 100644 --- a/cmd/kubeadm/app/cmd/upgrade/plan.go +++ b/cmd/kubeadm/app/cmd/upgrade/plan.go @@ -33,6 +33,7 @@ import ( kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config" etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd" + "k8s.io/kubernetes/pkg/util/version" ) type planFlags struct { @@ -147,6 +148,17 @@ func printAvailableUpgrades(upgrades []upgrade.Upgrade, w io.Writer, isExternalE // Loop through the upgrade possibilities and output text to the command line for _, upgrade := range upgrades { + newK8sVersion, err := version.ParseSemantic(upgrade.After.KubeVersion) + if err != nil { + fmt.Fprintf(w, "Unable to parse normalized version %q as a semantic version\n", upgrade.After.KubeVersion) + continue + } + + UnstableVersionFlag := "" + if len(newK8sVersion.PreRelease()) != 0 { + UnstableVersionFlag = "--allow-experimental-upgrades" + } + if isExternalEtcd && upgrade.CanUpgradeEtcd() { fmt.Fprintln(w, "External components that should be upgraded manually before you upgrade the control plane with 'kubeadm upgrade apply':") fmt.Fprintln(tabw, "COMPONENT\tCURRENT\tAVAILABLE") @@ -226,7 +238,7 @@ func printAvailableUpgrades(upgrades []upgrade.Upgrade, w io.Writer, isExternalE fmt.Fprintln(w, "") fmt.Fprintln(w, "You can now apply the upgrade by executing the following command:") fmt.Fprintln(w, "") - fmt.Fprintf(w, "\tkubeadm upgrade apply %s\n", upgrade.After.KubeVersion) + fmt.Fprintf(w, "\tkubeadm upgrade apply %s %s\n", upgrade.After.KubeVersion, UnstableVersionFlag) fmt.Fprintln(w, "") if upgrade.Before.KubeadmVersion != upgrade.After.KubeadmVersion {