diff --git a/pkg/kubelet/nodestatus/setters.go b/pkg/kubelet/nodestatus/setters.go index c26e9b8579a..85d1e1748fa 100644 --- a/pkg/kubelet/nodestatus/setters.go +++ b/pkg/kubelet/nodestatus/setters.go @@ -91,17 +91,16 @@ func NodeAddress(nodeIP net.IP, // typically Kubelet.nodeIP if nodeIP != nil { enforcedNodeAddresses := []v1.NodeAddress{} - var nodeIPType v1.NodeAddressType + nodeIPTypes := make(map[v1.NodeAddressType]bool) for _, nodeAddress := range nodeAddresses { if nodeAddress.Address == nodeIP.String() { enforcedNodeAddresses = append(enforcedNodeAddresses, v1.NodeAddress{Type: nodeAddress.Type, Address: nodeAddress.Address}) - nodeIPType = nodeAddress.Type - break + nodeIPTypes[nodeAddress.Type] = true } } if len(enforcedNodeAddresses) > 0 { for _, nodeAddress := range nodeAddresses { - if nodeAddress.Type != nodeIPType && nodeAddress.Type != v1.NodeHostName { + if !nodeIPTypes[nodeAddress.Type] && nodeAddress.Type != v1.NodeHostName { enforcedNodeAddresses = append(enforcedNodeAddresses, v1.NodeAddress{Type: nodeAddress.Type, Address: nodeAddress.Address}) } } diff --git a/pkg/kubelet/nodestatus/setters_test.go b/pkg/kubelet/nodestatus/setters_test.go index 2783a0c2cda..321c9f18008 100644 --- a/pkg/kubelet/nodestatus/setters_test.go +++ b/pkg/kubelet/nodestatus/setters_test.go @@ -95,6 +95,8 @@ func TestNodeAddress(t *testing.T) { name: "InternalIP and ExternalIP are the same", nodeIP: net.ParseIP("55.55.55.55"), nodeAddresses: []v1.NodeAddress{ + {Type: v1.NodeInternalIP, Address: "44.44.44.44"}, + {Type: v1.NodeExternalIP, Address: "44.44.44.44"}, {Type: v1.NodeInternalIP, Address: "55.55.55.55"}, {Type: v1.NodeExternalIP, Address: "55.55.55.55"}, {Type: v1.NodeHostName, Address: testKubeletHostname},