From 3bef5d2e0b75b3ca5cf8655806d63a32d7ced5ff Mon Sep 17 00:00:00 2001 From: "Rostislav M. Georgiev" Date: Tue, 1 Sep 2020 15:47:33 +0300 Subject: [PATCH] kubeadm: Ensure etcd manifests are regenerated upon upgrade A check that verifies that kubeadm does not "upgrade" to an older release was overly optimized by skipping upgrade if the new version is the same as the old one. This somewhat makes sense, but that way changes in any of the etcd fields in the ClusterConfiguration won't be applied if the etcd version is not changed. Hence, this simple change ensures that the upgrade is done even when no version change takes place. Signed-off-by: Rostislav M. Georgiev --- cmd/kubeadm/app/phases/upgrade/staticpods.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/kubeadm/app/phases/upgrade/staticpods.go b/cmd/kubeadm/app/phases/upgrade/staticpods.go index 64d13abb310..673be53f3b3 100644 --- a/cmd/kubeadm/app/phases/upgrade/staticpods.go +++ b/cmd/kubeadm/app/phases/upgrade/staticpods.go @@ -321,8 +321,8 @@ func performEtcdStaticPodUpgrade(certsRenewMgr *renewal.Manager, client clientse if err != nil { return true, errors.Wrapf(err, "failed comparing the current etcd version %q to the desired one %q", currentEtcdVersionStr, desiredEtcdVersion) } - if cmpResult < 1 { - return false, errors.Errorf("the desired etcd version %q is not newer than the currently installed %q. Skipping etcd upgrade", desiredEtcdVersion, currentEtcdVersionStr) + if cmpResult < 0 { + return false, errors.Errorf("the desired etcd version %q is older than the currently installed %q. Skipping etcd upgrade", desiredEtcdVersion, currentEtcdVersionStr) } beforeEtcdPodHash, err := waiter.WaitForStaticPodSingleHash(cfg.NodeRegistration.Name, constants.Etcd)