mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +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",
|
"//test/utils/image:go_default_library",
|
||||||
"//vendor/github.com/onsi/ginkgo:go_default_library",
|
"//vendor/github.com/onsi/ginkgo:go_default_library",
|
||||||
"//vendor/github.com/onsi/gomega: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",
|
"//vendor/k8s.io/utils/pointer:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
netutil "k8s.io/utils/net"
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@ -248,6 +249,26 @@ func GetInternalIP(node *v1.Node) (string, error) {
|
|||||||
return host, nil
|
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
|
// GetAddresses returns a list of addresses of the given addressType for the given node
|
||||||
func GetAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string) {
|
func GetAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string) {
|
||||||
for j := range node.Status.Addresses {
|
for j := range node.Status.Addresses {
|
||||||
|
@ -103,16 +103,25 @@ var _ = SIGDescribe("Conntrack", func() {
|
|||||||
len(nodes.Items))
|
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{
|
clientNodeInfo = nodeInfo{
|
||||||
name: nodes.Items[0].Name,
|
name: nodes.Items[0].Name,
|
||||||
nodeIP: ips[0],
|
nodeIP: ips[0],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ips = e2enode.GetAddressesByTypeAndFamily(&nodes.Items[1], v1.NodeInternalIP, family)
|
||||||
|
|
||||||
serverNodeInfo = nodeInfo{
|
serverNodeInfo = nodeInfo{
|
||||||
name: nodes.Items[1].Name,
|
name: nodes.Items[1].Name,
|
||||||
nodeIP: ips[1],
|
nodeIP: ips[0],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -60,24 +60,33 @@ var _ = SIGDescribe("KubeProxy", func() {
|
|||||||
len(nodes.Items))
|
len(nodes.Items))
|
||||||
}
|
}
|
||||||
|
|
||||||
ips := e2enode.CollectAddresses(nodes, v1.NodeInternalIP)
|
|
||||||
|
|
||||||
type NodeInfo struct {
|
type NodeInfo struct {
|
||||||
node *v1.Node
|
node *v1.Node
|
||||||
name string
|
name string
|
||||||
nodeIP 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{
|
clientNodeInfo := NodeInfo{
|
||||||
node: &nodes.Items[0],
|
node: &nodes.Items[0],
|
||||||
name: nodes.Items[0].Name,
|
name: nodes.Items[0].Name,
|
||||||
nodeIP: ips[0],
|
nodeIP: ips[0],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ips = e2enode.GetAddressesByTypeAndFamily(&nodes.Items[1], v1.NodeInternalIP, family)
|
||||||
|
|
||||||
serverNodeInfo := NodeInfo{
|
serverNodeInfo := NodeInfo{
|
||||||
node: &nodes.Items[1],
|
node: &nodes.Items[1],
|
||||||
name: nodes.Items[1].Name,
|
name: nodes.Items[1].Name,
|
||||||
nodeIP: ips[1],
|
nodeIP: ips[0],
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a pod to check the conntrack entries on the host node
|
// Create a pod to check the conntrack entries on the host node
|
||||||
|
Loading…
Reference in New Issue
Block a user