mirror of https://github.com/k3s-io/k3s
* Make sure there are no duplicates in etcd member list Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * fix node names with hyphens Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * use full server name for etcd node name Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com>pull/4229/head
parent
1eeffbb330
commit
0c109a58b0
|
@ -226,6 +226,7 @@ func run(app *cli.Context, cfg *cmds.Server, leaderControllers server.CustomCont
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
serverConfig.ControlConfig.ServerNodeName = nodeName
|
||||||
serverConfig.ControlConfig.SANs = append(serverConfig.ControlConfig.SANs, "127.0.0.1", "localhost", nodeName)
|
serverConfig.ControlConfig.SANs = append(serverConfig.ControlConfig.SANs, "127.0.0.1", "localhost", nodeName)
|
||||||
for _, ip := range nodeIPs {
|
for _, ip := range nodeIPs {
|
||||||
serverConfig.ControlConfig.SANs = append(serverConfig.ControlConfig.SANs, ip.String())
|
serverConfig.ControlConfig.SANs = append(serverConfig.ControlConfig.SANs, ip.String())
|
||||||
|
|
|
@ -166,6 +166,7 @@ type Control struct {
|
||||||
EtcdS3BucketName string
|
EtcdS3BucketName string
|
||||||
EtcdS3Region string
|
EtcdS3Region string
|
||||||
EtcdS3Folder string
|
EtcdS3Folder string
|
||||||
|
ServerNodeName string
|
||||||
|
|
||||||
BindAddress string
|
BindAddress string
|
||||||
SANs []string
|
SANs []string
|
||||||
|
|
|
@ -323,6 +323,16 @@ func (e *ETCD) join(ctx context.Context, clientAccessInfo *clientaccess.Info) er
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, member := range members.Members {
|
for _, member := range members.Members {
|
||||||
|
lastHyphen := strings.LastIndex(member.Name, "-")
|
||||||
|
memberNodeName := member.Name[:lastHyphen]
|
||||||
|
if memberNodeName == e.config.ServerNodeName {
|
||||||
|
// make sure to remove the name file if a duplicate node name is used
|
||||||
|
nameFile := nameFile(e.config)
|
||||||
|
if err := os.Remove(nameFile); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return errors.New("Failed to join etcd cluster due to duplicate node names, please use unique node name for the server")
|
||||||
|
}
|
||||||
for _, peer := range member.PeerURLs {
|
for _, peer := range member.PeerURLs {
|
||||||
u, err := url.Parse(peer)
|
u, err := url.Parse(peer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -408,11 +418,7 @@ func (e *ETCD) setName(force bool) error {
|
||||||
fileName := nameFile(e.config)
|
fileName := nameFile(e.config)
|
||||||
data, err := ioutil.ReadFile(fileName)
|
data, err := ioutil.ReadFile(fileName)
|
||||||
if os.IsNotExist(err) || force {
|
if os.IsNotExist(err) || force {
|
||||||
h, err := os.Hostname()
|
e.name = e.config.ServerNodeName + "-" + uuid.New().String()[:8]
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
e.name = strings.SplitN(h, ".", 2)[0] + "-" + uuid.New().String()[:8]
|
|
||||||
if err := os.MkdirAll(filepath.Dir(fileName), 0700); err != nil {
|
if err := os.MkdirAll(filepath.Dir(fileName), 0700); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue