Merge pull request #70805 from danwinship/cloud-node-ip

Fix a CloudProvider-vs-nodeIP edge case
This commit is contained in:
Kubernetes Prow Robot 2019-01-16 09:04:54 -08:00 committed by GitHub
commit 56e88f5b47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 4 deletions

View File

@ -91,17 +91,16 @@ func NodeAddress(nodeIP net.IP, // typically Kubelet.nodeIP
if nodeIP != nil { if nodeIP != nil {
enforcedNodeAddresses := []v1.NodeAddress{} enforcedNodeAddresses := []v1.NodeAddress{}
var nodeIPType v1.NodeAddressType nodeIPTypes := make(map[v1.NodeAddressType]bool)
for _, nodeAddress := range nodeAddresses { for _, nodeAddress := range nodeAddresses {
if nodeAddress.Address == nodeIP.String() { if nodeAddress.Address == nodeIP.String() {
enforcedNodeAddresses = append(enforcedNodeAddresses, v1.NodeAddress{Type: nodeAddress.Type, Address: nodeAddress.Address}) enforcedNodeAddresses = append(enforcedNodeAddresses, v1.NodeAddress{Type: nodeAddress.Type, Address: nodeAddress.Address})
nodeIPType = nodeAddress.Type nodeIPTypes[nodeAddress.Type] = true
break
} }
} }
if len(enforcedNodeAddresses) > 0 { if len(enforcedNodeAddresses) > 0 {
for _, nodeAddress := range nodeAddresses { 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}) enforcedNodeAddresses = append(enforcedNodeAddresses, v1.NodeAddress{Type: nodeAddress.Type, Address: nodeAddress.Address})
} }
} }

View File

@ -95,6 +95,8 @@ func TestNodeAddress(t *testing.T) {
name: "InternalIP and ExternalIP are the same", name: "InternalIP and ExternalIP are the same",
nodeIP: net.ParseIP("55.55.55.55"), nodeIP: net.ParseIP("55.55.55.55"),
nodeAddresses: []v1.NodeAddress{ 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.NodeInternalIP, Address: "55.55.55.55"},
{Type: v1.NodeExternalIP, Address: "55.55.55.55"}, {Type: v1.NodeExternalIP, Address: "55.55.55.55"},
{Type: v1.NodeHostName, Address: testKubeletHostname}, {Type: v1.NodeHostName, Address: testKubeletHostname},