From 016cc0c12039a1546d72c6aea746cd8204aa31fb Mon Sep 17 00:00:00 2001 From: Dave Chen Date: Mon, 26 Dec 2022 16:01:12 +0800 Subject: [PATCH] kubeadm:[cherry-pick]backup kubelet config for "upgrade node" This addresses the TODO item so that the old kubelet config file could be recovered if something goes wrong. Signed-off-by: Dave Chen Co-authored-by: Paco Xu --- .../app/cmd/phases/upgrade/node/kubeletconfig.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go b/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go index d1c66dfd02c..2eb50565203 100644 --- a/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go +++ b/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go @@ -71,6 +71,21 @@ func runKubeletConfigPhase() func(c workflow.RunData) error { return err } + // Create a copy of the kubelet config file in the /etc/kubernetes/tmp/ folder. + backupDir, err := constants.CreateTempDirForKubeadm(constants.KubernetesDir, "kubeadm-kubelet-config") + if err != nil { + return err + } + src := filepath.Join(kubeletDir, constants.KubeletConfigurationFileName) + dest := filepath.Join(backupDir, constants.KubeletConfigurationFileName) + if !dryRun { + fmt.Printf("[upgrade] Backing up kubelet config file to %s\n", dest) + if err := os.Rename(src, dest); err != nil { + return errors.Wrap(err, "error backing up the kubelet config file") + } + } else { + fmt.Printf("[dryrun] Would back up kubelet config file to %s\n", dest) + } // Store the kubelet component configuration. if err = kubeletphase.WriteConfigToDisk(&cfg.ClusterConfiguration, kubeletDir, data.PatchesDir(), data.OutputWriter()); err != nil { return err