mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 11:21:47 +00:00
kubeadm: don't re-add an etcd member if it already exists for "join"
If an etcd member with the same address already exists, don't re-add it. Instead, use the existing member list for creating the "initial cluster" that is written for this etcd server instance static Pod.
This commit is contained in:
parent
35fc65dc2c
commit
94af045324
@ -149,16 +149,36 @@ func CreateStackedEtcdStaticPodManifestFile(client clientset.Interface, manifest
|
||||
return err
|
||||
}
|
||||
|
||||
// notifies the other members of the etcd cluster about the joining member
|
||||
etcdPeerAddress := etcdutil.GetPeerURL(endpoint)
|
||||
|
||||
klog.V(1).Infof("Adding etcd member: %s", etcdPeerAddress)
|
||||
initialCluster, err := etcdClient.AddMember(nodeName, etcdPeerAddress)
|
||||
klog.V(1).Infoln("[etcd] Getting the list of existing members")
|
||||
initialCluster, err := etcdClient.ListMembers()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println("[etcd] Announced new etcd member joining to the existing etcd cluster")
|
||||
klog.V(1).Infof("Updated etcd member list: %v", initialCluster)
|
||||
|
||||
// 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 {
|
||||
exists = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if exists {
|
||||
klog.V(1).Infof("[etcd] Etcd member already exists: %s", endpoint)
|
||||
} else {
|
||||
klog.V(1).Infof("[etcd] Adding etcd member: %s", etcdPeerAddress)
|
||||
initialCluster, err = etcdClient.AddMember(nodeName, etcdPeerAddress)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Println("[etcd] Announced new etcd member joining to the existing etcd cluster")
|
||||
klog.V(1).Infof("Updated etcd member list: %v", initialCluster)
|
||||
}
|
||||
|
||||
fmt.Printf("[etcd] Creating static Pod manifest for %q\n", kubeadmconstants.Etcd)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user