mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
dualstack: use correct IPFamily list for conntrack checks in e2e
We hardcode the index number in the KubeProxy/Conntrack e2es and CollectAddresses returns 4 mixed IP Family addresses in a dualstack cluster. This change ensures that the serverNodeInfo.nodeIP has only valid addresses for the expected IPFamily per test case. Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
This commit is contained in:
parent
17dcccbe07
commit
fa7a802d55
@ -27,6 +27,7 @@ go_library(
|
||||
"//test/utils/image:go_default_library",
|
||||
"//vendor/github.com/onsi/ginkgo:go_default_library",
|
||||
"//vendor/github.com/onsi/gomega:go_default_library",
|
||||
"//vendor/k8s.io/utils/net:go_default_library",
|
||||
"//vendor/k8s.io/utils/pointer:go_default_library",
|
||||
],
|
||||
)
|
||||
|
@ -20,6 +20,7 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
netutil "k8s.io/utils/net"
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
@ -248,6 +249,26 @@ func GetInternalIP(node *v1.Node) (string, error) {
|
||||
return host, nil
|
||||
}
|
||||
|
||||
// GetAddressesByTypeAndFamily returns a list of addresses of the given addressType for the given node
|
||||
// and filtered by IPFamily
|
||||
func GetAddressesByTypeAndFamily(node *v1.Node, addressType v1.NodeAddressType, family v1.IPFamily) (ips []string) {
|
||||
for _, nodeAddress := range node.Status.Addresses {
|
||||
if nodeAddress.Type != addressType {
|
||||
continue
|
||||
}
|
||||
if nodeAddress.Address == "" {
|
||||
continue
|
||||
}
|
||||
if family == v1.IPv6Protocol && netutil.IsIPv6String(nodeAddress.Address) {
|
||||
ips = append(ips, nodeAddress.Address)
|
||||
}
|
||||
if family == v1.IPv4Protocol && !netutil.IsIPv6String(nodeAddress.Address) {
|
||||
ips = append(ips, nodeAddress.Address)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetAddresses returns a list of addresses of the given addressType for the given node
|
||||
func GetAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string) {
|
||||
for j := range node.Status.Addresses {
|
||||
|
@ -103,16 +103,25 @@ var _ = SIGDescribe("Conntrack", func() {
|
||||
len(nodes.Items))
|
||||
}
|
||||
|
||||
ips := e2enode.CollectAddresses(nodes, v1.NodeInternalIP)
|
||||
var family v1.IPFamily
|
||||
if framework.TestContext.ClusterIsIPv6() {
|
||||
family = v1.IPv6Protocol
|
||||
} else {
|
||||
family = v1.IPv4Protocol
|
||||
}
|
||||
|
||||
ips := e2enode.GetAddressesByTypeAndFamily(&nodes.Items[0], v1.NodeInternalIP, family)
|
||||
|
||||
clientNodeInfo = nodeInfo{
|
||||
name: nodes.Items[0].Name,
|
||||
nodeIP: ips[0],
|
||||
}
|
||||
|
||||
ips = e2enode.GetAddressesByTypeAndFamily(&nodes.Items[1], v1.NodeInternalIP, family)
|
||||
|
||||
serverNodeInfo = nodeInfo{
|
||||
name: nodes.Items[1].Name,
|
||||
nodeIP: ips[1],
|
||||
nodeIP: ips[0],
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -60,24 +60,33 @@ var _ = SIGDescribe("KubeProxy", func() {
|
||||
len(nodes.Items))
|
||||
}
|
||||
|
||||
ips := e2enode.CollectAddresses(nodes, v1.NodeInternalIP)
|
||||
|
||||
type NodeInfo struct {
|
||||
node *v1.Node
|
||||
name string
|
||||
nodeIP string
|
||||
}
|
||||
|
||||
var family v1.IPFamily
|
||||
if framework.TestContext.ClusterIsIPv6() {
|
||||
family = v1.IPv6Protocol
|
||||
} else {
|
||||
family = v1.IPv4Protocol
|
||||
}
|
||||
|
||||
ips := e2enode.GetAddressesByTypeAndFamily(&nodes.Items[0], v1.NodeInternalIP, family)
|
||||
|
||||
clientNodeInfo := NodeInfo{
|
||||
node: &nodes.Items[0],
|
||||
name: nodes.Items[0].Name,
|
||||
nodeIP: ips[0],
|
||||
}
|
||||
|
||||
ips = e2enode.GetAddressesByTypeAndFamily(&nodes.Items[1], v1.NodeInternalIP, family)
|
||||
|
||||
serverNodeInfo := NodeInfo{
|
||||
node: &nodes.Items[1],
|
||||
name: nodes.Items[1].Name,
|
||||
nodeIP: ips[1],
|
||||
nodeIP: ips[0],
|
||||
}
|
||||
|
||||
// Create a pod to check the conntrack entries on the host node
|
||||
|
Loading…
Reference in New Issue
Block a user