Change:
<!-- Please only use this template for submitting reports about failing tests in Kubernetes CI jobs --Which jobs are failing: https://k8s-(IPv6),%20master%20(dev) Which test(s) are failing: [sig-scheduling] SchedulerPredicates [Serial] validates that there is no conflict between pods with same hostPort but different hostIP and protocol [Conformance] Since when has it been failing: Testgrid link: https://k8s-(IPv6),%20master%20(dev) Reason for failure: The tests checks for 0.0.0.0 that is IPv4 only Anything else we need to know: Probably I should check with SIG-Testing how can we add an ipv6 job and update the KEP accordingly EDIT Probably I should check with SIG-Testing how can we add an ipv6 job as part of the k/k presubmits, and update the KEP accordingly
/assign /cc
/sig scheduling

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

e2epod "k8s.io/kubernetes/test/e2e/framework/pod" "k8s.io/kubernetes/test/e2e/manifest" testutils "k8s.io/kubernetes/test/utils" <ins> utilnet "k8s.io/utils/net" </ins> // ensure auth plugins are loaded _ "k8s.io/client-go/plugin/pkg/client/auth"

e2elog.Logf("kube-apiserver version: %s", serverVersion.GitVersion) } <ins> // Obtain the default IP family of the cluster // Some e2e test are designed to work on IPv4 only, this global variable // allows to adapt those tests to work on both IPv4 and IPv6 // TODO(dual-stack): dual stack clusters should pass full e2e testing at least with the primary IP family // the dual stack clusters can be ipv4-ipv6 or ipv6-ipv4, order matters, // and services use the primary IP family by default // If we´ll need to provide additional context for dual-stack, we can detect it // because pods have two addresses (one per family) framework.TestContext.IPFamily = getDefaultClusterIPFamily(c) e2elog.Logf("Cluster IP family: %s", framework.TestContext.IPFamily) </ins> // Reference common test to make the import valid. commontest.CurrentSuite = commontest.E2E

e2elog.Logf("Output of clusterapi-tester:n%v", logs) } } <ins> // getDefaultClusterIPFamily obtains the default IP family of the cluster // using the Cluster IP address of the kubernetes service created in the default namespace // This unequivocally identifies the default IP family because services are single family func getDefaultClusterIPFamily(c clientset.Interface) string { // Get the ClusterIP of the kubernetes service created in the default namespace svc, err := c.CoreV1().Services(metav1.NamespaceDefault).Get("kubernetes", metav1.GetOptions{}) if err != nil { e2elog.Failf("Failed to get kubernetes service ClusterIP: %v", err) } if utilnet.IsIPv6String(svc.Spec.ClusterIP) { return "ipv6" } return "ipv4" } </ins>

"//vendor/golang.org/x/net/websocket:go_default_library", "//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", <ins> "//vendor/k8s.io/utils/net:go_default_library", </ins> ], )

"time" "github.com/onsi/ginkgo" <del> "k8s.io/api/core/v1" </del> <ins> v1 "k8s.io/api/core/v1" </ins> metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/util/intstr"

e2enode "k8s.io/kubernetes/test/e2e/framework/node" e2epod "k8s.io/kubernetes/test/e2e/framework/pod" imageutils "k8s.io/kubernetes/test/utils/image" <ins> k8utilnet "k8s.io/utils/net" </ins> ) const (

var netexecImageName = imageutils.GetE2EImage(imageutils.Agnhost) <ins> // TranslateIPv4ToIPv6 maps an IPv4 address into a valid IPv6 address // adding the well known prefix "0::ffff:" https://tools.ietf.org/html/rfc2765 // if the ip is IPv4 and the cluster IPFamily is IPv6, otherwise returns the same ip func TranslateIPv4ToIPv6(ip string) string { if TestContext.IPFamily == "ipv6" && !k8utilnet.IsIPv6String(ip) { ip = "0::ffff:" + ip } return ip } </ins> // NewNetworkingTestConfig creates and sets up a new test config helper. func NewNetworkingTestConfig(f *Framework) *NetworkingTestConfig { config := &NetworkingTestConfig{f: f, Namespace: f.Namespace.Name, HostNetwork: true}

// The configuration of NodeKiller. NodeKiller NodeKillerConfig <ins> // The Default IP Family of the cluster ("ipv4" or "ipv6") IPFamily string </ins> } // NodeKillerConfig describes configuration of NodeKiller -- a utility to

// create pod which using hostport on the specified node according to the nodeSelector func createHostPortPodOnNode(f *framework.Framework, podName, ns, hostIP string, port int32, protocol v1.Protocol, nodeSelector map[string]string, expectScheduled bool) { <ins> hostIP = framework.TranslateIPv4ToIPv6(hostIP) </ins> createPausePod(f, pausePodConfig{ Name: podName, Ports: []v1.ContainerPort{