Commit 5f042d10 authored by Malte Starostik's avatar Malte Starostik Committed by Brad Davidson

Fix URL pruning when joining an etcd member

* Fix URL pruning when joining an etcd member Problem: Existing member clientURLs were checked if they contain the joining node's IP. In some edge cases this would prune valid URLs when the joining IP is a substring match of the only existing member's IP. Because of this, it was impossible to e.g. join 10.0.0.2 to an existing node that has an IP of 10.0.0.2X or 10.0.0.2XX: level=fatal msg="starting kubernetes: preparing server: start managed database: joining etcd cluster: etcdclient: no available endpoints" Solution: Fixed by properly parsing the URLs and comparing the IPs for equality instead of substring match. Signed-off-by: 's avatarMalte Starostik <info@stellaware.de> (cherry picked from commit b23955e8) Signed-off-by: 's avatarBrad Davidson <brad.davidson@rancher.com>
parent 6c39336a
......@@ -746,8 +746,12 @@ members:
if member.IsLearner {
continue
}
for _, url := range member.ClientURLs {
if strings.Contains(url, ip) {
for _, clientURL := range member.ClientURLs {
u, err := url.Parse(clientURL)
if err != nil {
continue
}
if u.Hostname() == ip {
continue members
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment