From 2c06f11052a56a5899383ccde1611393be6bc1be Mon Sep 17 00:00:00 2001 From: deads2k Date: Thu, 23 Jul 2015 14:28:27 -0400 Subject: [PATCH] make kubelet prefer ipv4 address if available --- pkg/kubelet/kubelet.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 53843a068fc..8166b6622c0 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -1997,7 +1997,27 @@ func (kl *Kubelet) setNodeStatus(node *api.Node) error { } else if len(addrs) == 0 { return fmt.Errorf("no ip address for node %v", node.Name) } else { - node.Status.Addresses = []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: addrs[0].String()}} + // check all ip addresses for this node.Name and try to find the first non-loopback IPv4 address. + // If no match is found, it uses the IP of the interface with gateway on it. + for _, ip := range addrs { + if ip.IsLoopback() { + continue + } + + if ip.To4() != nil { + node.Status.Addresses = []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: ip.String()}} + break + } + } + + if len(node.Status.Addresses) == 0 { + ip, err := util.ChooseHostInterface() + if err != nil { + return err + } + + node.Status.Addresses = []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: ip.String()}} + } } } }