diff --git a/test/e2e/framework/network/utils.go b/test/e2e/framework/network/utils.go index e89d5c79ae0..e22160abe11 100644 --- a/test/e2e/framework/network/utils.go +++ b/test/e2e/framework/network/utils.go @@ -181,10 +181,6 @@ type NetworkingTestConfig struct { // SessionAffinityService is a Service with SessionAffinity=ClientIP // spanning over all endpointPods. SessionAffinityService *v1.Service - // ExternalAddr is a external IP of a node in the cluster. - ExternalAddr string - // SecondaryExternalAddr is a external IP of the secondary IP family of a node in the cluster. - SecondaryExternalAddr string // Nodes is a list of nodes in the cluster. Nodes []v1.Node // MaxTries is the number of retries tolerated for tests run against @@ -194,9 +190,11 @@ type NetworkingTestConfig struct { ClusterIP string // The SecondaryClusterIP of the Service created by this test config. SecondaryClusterIP string - // External ip of first node for use in nodePort testing. + // NodeIP it's an ExternalIP if the node has one, + // or an InternalIP if not, for use in nodePort testing. NodeIP string - // External ip of other IP family of first node for use in nodePort testing. + // SecondaryNodeIP it's an ExternalIP of the secondary IP family if the node has one, + // or an InternalIP if not, for usein nodePort testing. SecondaryNodeIP string // The http/udp/sctp nodePorts of the Service. NodeHTTPPort int @@ -779,6 +777,8 @@ func (config *NetworkingTestConfig) setup(selector map[string]string) { } // Obtain the primary IP family of the Cluster based on the first ClusterIP + // TODO: Eventually we should just be getting these from Spec.IPFamilies + // but for now that would only if the feature gate is enabled. family := v1.IPv4Protocol secondaryFamily := v1.IPv6Protocol if netutils.IsIPv6String(config.ClusterIP) { @@ -786,17 +786,13 @@ func (config *NetworkingTestConfig) setup(selector map[string]string) { secondaryFamily = v1.IPv4Protocol } // Get Node IPs from the cluster, ExternalIPs take precedence - config.ExternalAddr = e2enode.FirstAddressByTypeAndFamily(nodeList, v1.NodeExternalIP, family) - if config.ExternalAddr != "" { - config.NodeIP = config.ExternalAddr - } else { + config.NodeIP = e2enode.FirstAddressByTypeAndFamily(nodeList, v1.NodeExternalIP, family) + if config.NodeIP == "" { config.NodeIP = e2enode.FirstAddressByTypeAndFamily(nodeList, v1.NodeInternalIP, family) } if config.DualStackEnabled { - config.SecondaryExternalAddr = e2enode.FirstAddressByTypeAndFamily(nodeList, v1.NodeExternalIP, secondaryFamily) - if config.SecondaryExternalAddr != "" { - config.SecondaryNodeIP = config.SecondaryExternalAddr - } else { + config.SecondaryNodeIP = e2enode.FirstAddressByTypeAndFamily(nodeList, v1.NodeExternalIP, secondaryFamily) + if config.SecondaryNodeIP == "" { config.SecondaryNodeIP = e2enode.FirstAddressByTypeAndFamily(nodeList, v1.NodeInternalIP, secondaryFamily) } } diff --git a/test/e2e/framework/node/resource.go b/test/e2e/framework/node/resource.go index c44c5bcd097..ce33c29cb5d 100644 --- a/test/e2e/framework/node/resource.go +++ b/test/e2e/framework/node/resource.go @@ -24,8 +24,6 @@ import ( "strings" "time" - netutil "k8s.io/utils/net" - "github.com/onsi/ginkgo" "github.com/onsi/gomega" @@ -43,6 +41,7 @@ import ( clientset "k8s.io/client-go/kubernetes" clientretry "k8s.io/client-go/util/retry" e2elog "k8s.io/kubernetes/test/e2e/framework/log" + netutil "k8s.io/utils/net" ) const ( @@ -250,7 +249,7 @@ func GetInternalIP(node *v1.Node) (string, error) { return host, nil } -// FirstAddressByTypeAndFamily returns the first address of the given type and family of each node. +// FirstAddressByTypeAndFamily returns the first address that matches the given type and family of the list of nodes func FirstAddressByTypeAndFamily(nodelist *v1.NodeList, addrType v1.NodeAddressType, family v1.IPFamily) string { for _, n := range nodelist.Items { addresses := GetAddressesByTypeAndFamily(&n, addrType, family) diff --git a/test/e2e/network/dual_stack.go b/test/e2e/network/dual_stack.go index 0f7209ee7a8..19f7727554e 100644 --- a/test/e2e/network/dual_stack.go +++ b/test/e2e/network/dual_stack.go @@ -460,8 +460,7 @@ var _ = SIGDescribe("[Feature:IPv6DualStackAlphaFeature] [LinuxOnly]", func() { config.DialFromTestContainer("udp", config.SecondaryNodeIP, config.NodeUDPPort, config.MaxTries, 0, config.EndpointHostnames()) }) - // Once basic tests checking for the sctp module not to be loaded are implemented, this - // needs to be marked as [Disruptive] + // [Disruptive] because it conflicts with tests that call CheckSCTPModuleLoadedOnNodes ginkgo.It("should function for pod-Service: sctp [Feature:SCTPConnectivity][Disruptive]", func() { config := e2enetwork.NewNetworkingTestConfig(f, e2enetwork.EnableDualStack, e2enetwork.EnableSCTP) ginkgo.By(fmt.Sprintf("dialing(sctp) %v --> %v:%v (config.clusterIP)", config.TestContainerPod.Name, config.SecondaryClusterIP, e2enetwork.ClusterSCTPPort))