From 916dbc335c9253c0257687ce9bc5f35255fc9aea Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Fri, 25 Jun 2021 10:25:18 +0200 Subject: [PATCH] nodeport tests: node addresses must match the service IP family --- test/e2e/network/service.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/test/e2e/network/service.go b/test/e2e/network/service.go index 755efd4cd20..38b1af45240 100644 --- a/test/e2e/network/service.go +++ b/test/e2e/network/service.go @@ -29,26 +29,29 @@ import ( "strings" "time" - utilnet "k8s.io/apimachinery/pkg/util/net" - utilrand "k8s.io/apimachinery/pkg/util/rand" - - "k8s.io/client-go/tools/cache" - appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" discoveryv1 "k8s.io/api/discovery/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" + utilnet "k8s.io/apimachinery/pkg/util/net" + utilrand "k8s.io/apimachinery/pkg/util/rand" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" watch "k8s.io/apimachinery/pkg/watch" + clientset "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/cache" watchtools "k8s.io/client-go/tools/watch" "k8s.io/client-go/util/retry" + cloudprovider "k8s.io/cloud-provider" + netutils "k8s.io/utils/net" + "k8s.io/kubernetes/test/e2e/framework" e2edeployment "k8s.io/kubernetes/test/e2e/framework/deployment" e2eendpoints "k8s.io/kubernetes/test/e2e/framework/endpoints" @@ -2573,9 +2576,13 @@ func execAffinityTestForNonLBServiceWithOptionalTransition(f *framework.Framewor if serviceType == v1.ServiceTypeNodePort { nodes, err := e2enode.GetReadySchedulableNodes(cs) framework.ExpectNoError(err) - addrs := e2enode.CollectAddresses(nodes, v1.NodeInternalIP) - gomega.Expect(len(addrs)).To(gomega.BeNumerically(">", 0), "ginkgo.Failed to get Node internal IP") - svcIP = addrs[0] + // The node addresses must have the same IP family as the ClusterIP + family := v1.IPv4Protocol + if netutils.IsIPv6String(svc.Spec.ClusterIP) { + family = v1.IPv6Protocol + } + svcIP = e2enode.FirstAddressByTypeAndFamily(nodes, v1.NodeInternalIP, family) + gomega.Expect(len(svcIP)).To(gomega.BeNumerically(">", 0), "ginkgo.Failed to get Node internal IP") servicePort = int(svc.Spec.Ports[0].NodePort) } else { svcIP = svc.Spec.ClusterIP