From 0e0abd602fac12c4422f8fe89c1f04c34067a76f Mon Sep 17 00:00:00 2001 From: Jyoti Mahapatra <49211422+jyotimahapatra@users.noreply.github.com> Date: Wed, 26 Jan 2022 18:38:49 -0800 Subject: [PATCH] parse ipv6 address before comparison (#107736) * parse ipv6 address before comparison Signed-off-by: Jyoti Mahapatra * use parse sloppy Signed-off-by: Jyoti Mahapatra * use parse sloppy Signed-off-by: Jyoti Mahapatra * use node address from cloudprovider as is Signed-off-by: Jyoti Mahapatra --- pkg/kubelet/nodestatus/setters.go | 2 +- pkg/kubelet/nodestatus/setters_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/nodestatus/setters.go b/pkg/kubelet/nodestatus/setters.go index c062327ba8e..d09e992e0a6 100644 --- a/pkg/kubelet/nodestatus/setters.go +++ b/pkg/kubelet/nodestatus/setters.go @@ -126,7 +126,7 @@ func NodeAddress(nodeIPs []net.IP, // typically Kubelet.nodeIPs nodeIPTypes := make(map[v1.NodeAddressType]bool) for _, nodeAddress := range cloudNodeAddresses { - if nodeAddress.Address == nodeIP.String() { + if netutils.ParseIPSloppy(nodeAddress.Address).Equal(nodeIP) { enforcedNodeAddresses = append(enforcedNodeAddresses, v1.NodeAddress{Type: nodeAddress.Type, Address: nodeAddress.Address}) nodeIPTypes[nodeAddress.Type] = true } diff --git a/pkg/kubelet/nodestatus/setters_test.go b/pkg/kubelet/nodestatus/setters_test.go index 83485d33df8..da339907eb2 100644 --- a/pkg/kubelet/nodestatus/setters_test.go +++ b/pkg/kubelet/nodestatus/setters_test.go @@ -294,6 +294,20 @@ func TestNodeAddress(t *testing.T) { hostnameOverride: true, shouldError: false, }, + { + name: "Dual-stack cloud, with nodeIP, different IPv6 formats", + nodeIP: netutils.ParseIPSloppy("2600:1f14:1d4:d101::ba3d"), + nodeAddresses: []v1.NodeAddress{ + {Type: v1.NodeInternalIP, Address: "10.1.1.1"}, + {Type: v1.NodeInternalIP, Address: "2600:1f14:1d4:d101:0:0:0:ba3d"}, + {Type: v1.NodeHostName, Address: testKubeletHostname}, + }, + expectedAddresses: []v1.NodeAddress{ + {Type: v1.NodeInternalIP, Address: "2600:1f14:1d4:d101:0:0:0:ba3d"}, + {Type: v1.NodeHostName, Address: testKubeletHostname}, + }, + shouldError: false, + }, { name: "Dual-stack cloud, IPv4 first, no nodeIP", nodeAddresses: []v1.NodeAddress{