Change:
<!-- Please only use this template for submitting reports about continuously failing tests or jobs in Kubernetes CI --Which jobs are failing: sig-network-kind-ipvs,dual,master sig-network-kind-ipvs,IPv6,master Which test(s) are failing: [x] KubeProxy should set TCP CLOSE_WAIT timeout [x] Conntrack should be able to preserve UDP traffic when server pod cycles for a NodePort Service [x] KubeProxy should resorve connection reset issue (tracking in ) Since when has it been failing: Oct 28 Testgrid link: sig-network-kind-ipvs,dual,master  Reason for failure: Both appear to be failing on missing conntrack entries ex. Anything else we need to know:
/sig network /cc /assign
I'm spinning up a kind cluster with ipv6+ipvs to see if I can replicate this test locally
/triage accepted
heh, the job was not running it, it started to run when we changed the tag I meant this test and the PR where we renamed the kube-proxy test
this one has an issue already open, and I have a PR for fixing it
reached out to me on Slack and we identified as the high priority. I have tested this locally and it fails on both IPTables and IPVS kind clusters locally. I'm digging through the cluster logs now.
I' ve logging to conntrack with level v4 recently just for these problems, try to bump your kube-proxy logging to v4
seems that there are less test failures on the IPv6 jobs, let's keep watching them :eyes: However, the dual-stack jobs are legit failures, basically because on dualstack clusters, the node has 2 internal IPs, and those tests use the internal IP for asserting some operations, and the problem is that they are picking the internalIP of the wrong IP family, hence the test fails The solution should be to add the InernalIp correspoding to the cluster primary IP familty, you can obtain it with but it seems that we have to modify the function or add a new one that returns the nodes and the corresponding ips
Hey Thanks for all the help, will look into the areas of the code and try to bump the logging.

Discussion:
"//test/utils/image:go_default_library", "//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library", <ins> "//vendor/k8s.io/utils/net:go_default_library", </ins> "//vendor/k8s.io/utils/pointer:go_default_library", ], )

"context" "encoding/json" "fmt" <ins> netutil "k8s.io/utils/net" </ins> "net" "strings" "time"

return host, nil } <ins> // 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 } </ins> // 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 {

len(nodes.Items)) } <del> ips := e2enode.CollectAddresses(nodes, v1.NodeInternalIP) </del> <ins> var family v1.IPFamily if framework.TestContext.ClusterIsIPv6() { family = v1.IPv6Protocol } else { family = v1.IPv4Protocol } ips := e2enode.GetAddressesByTypeAndFamily(&nodes.Items[0], v1.NodeInternalIP, family) </ins> clientNodeInfo = nodeInfo{ name:   nodes.Items[0].Name, nodeIP: ips[0], } <ins> ips = e2enode.GetAddressesByTypeAndFamily(&nodes.Items[1], v1.NodeInternalIP, family) </ins> serverNodeInfo = nodeInfo{ name:   nodes.Items[1].Name, <del> nodeIP: ips[1], </del> <ins> nodeIP: ips[0], </ins> } })

len(nodes.Items)) } <del> ips := e2enode.CollectAddresses(nodes, v1.NodeInternalIP) </del> type NodeInfo struct { node   *v1.Node name   string nodeIP string } <ins> var family v1.IPFamily if framework.TestContext.ClusterIsIPv6() { family = v1.IPv6Protocol } else { family = v1.IPv4Protocol } ips := e2enode.GetAddressesByTypeAndFamily(&nodes.Items[0], v1.NodeInternalIP, family) </ins> clientNodeInfo := NodeInfo{ node:   &nodes.Items[0], name:   nodes.Items[0].Name, nodeIP: ips[0], } <ins> ips = e2enode.GetAddressesByTypeAndFamily(&nodes.Items[1], v1.NodeInternalIP, family) </ins> serverNodeInfo := NodeInfo{ node:   &nodes.Items[1], name:   nodes.Items[1].Name, <del> nodeIP: ips[1], </del> <ins> nodeIP: ips[0], </ins> } // Create a pod to check the conntrack entries on the host node