mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// notifies the other members of the etcd cluster about the joining member
|
|
||||||
etcdPeerAddress := etcdutil.GetPeerURL(endpoint)
|
etcdPeerAddress := etcdutil.GetPeerURL(endpoint)
|
||||||
|
|
||||||
klog.V(1).Infof("Adding etcd member: %s", etcdPeerAddress)
|
klog.V(1).Infoln("[etcd] Getting the list of existing members")
|
||||||
initialCluster, err := etcdClient.AddMember(nodeName, etcdPeerAddress)
|
initialCluster, err := etcdClient.ListMembers()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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)
|
fmt.Printf("[etcd] Creating static Pod manifest for %q\n", kubeadmconstants.Etcd)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user