From 863c6ca241aaadfd637f0d6b85155893a1551ca6 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 8 Nov 2018 10:32:03 -0500 Subject: [PATCH] Fix a CloudProvider-vs-nodeIP edge case --- pkg/kubelet/nodestatus/setters.go | 7 +++---- pkg/kubelet/nodestatus/setters_test.go | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pkg/kubelet/nodestatus/setters.go b/pkg/kubelet/nodestatus/setters.go index bf049c4824b..4ff67d233fd 100644 --- a/pkg/kubelet/nodestatus/setters.go +++ b/pkg/kubelet/nodestatus/setters.go @@ -90,17 +90,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 ad7fcc7eb3b..9aa5d973eca 100644 --- a/pkg/kubelet/nodestatus/setters_test.go +++ b/pkg/kubelet/nodestatus/setters_test.go @@ -94,6 +94,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},