diff --git a/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go b/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go index b2652dac2da..0a572a90a72 100644 --- a/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go +++ b/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go @@ -71,8 +71,17 @@ func runKubeletConfigPhase() func(c workflow.RunData) error { return err } - // TODO: Checkpoint the current configuration first so that if something goes wrong it can be recovered - + // 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) + 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") + } // Store the kubelet component configuration. if err = kubeletphase.WriteConfigToDisk(&cfg.ClusterConfiguration, kubeletDir, data.PatchesDir(), data.OutputWriter()); err != nil { return err