From dc70c79a00b256f065acadc11d9b9c6bac59991a Mon Sep 17 00:00:00 2001 From: Ian Gann Date: Thu, 17 Dec 2020 11:54:02 -0800 Subject: [PATCH] Fix bug in Member Exists Join for Kubeadm etcd join In kubeadm etcd join there is a a bug that exists where, if a peer already exists in etcd, it attempts to mitigate by continuing and generating the etcd manifest file. However, this existing "member name" may actually be unset, causing subsequent etcd consistency checks to fail. This change checks if the member name is empty - if it is, it sets the member name to the node name, and resumes. --- cmd/kubeadm/app/phases/etcd/local.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cmd/kubeadm/app/phases/etcd/local.go b/cmd/kubeadm/app/phases/etcd/local.go index 1965e916eed..5cdcb353941 100644 --- a/cmd/kubeadm/app/phases/etcd/local.go +++ b/cmd/kubeadm/app/phases/etcd/local.go @@ -162,9 +162,13 @@ func CreateStackedEtcdStaticPodManifestFile(client clientset.Interface, manifest // only add the new member if it doesn't already exists var exists bool klog.V(1).Infof("[etcd] Checking if the etcd member already exists: %s", etcdPeerAddress) - for _, member := range initialCluster { - if member.PeerURL == etcdPeerAddress { + for i := range initialCluster { + if initialCluster[i].PeerURL == etcdPeerAddress { exists = true + if len(initialCluster[i].Name) == 0 { + klog.V(1).Infof("[etcd] etcd member name is empty. Setting it to the node name: %s", nodeName) + initialCluster[i].Name = nodeName + } break } }