|
|
|
@@ -45,11 +45,9 @@ import (
|
|
|
|
|
commontest "k8s.io/kubernetes/test/e2e/common"
|
|
|
|
|
"k8s.io/kubernetes/test/e2e/framework"
|
|
|
|
|
e2ekubectl "k8s.io/kubernetes/test/e2e/framework/kubectl"
|
|
|
|
|
e2emanifest "k8s.io/kubernetes/test/e2e/framework/manifest"
|
|
|
|
|
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
|
|
|
|
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
|
|
|
|
e2ereporters "k8s.io/kubernetes/test/e2e/reporters"
|
|
|
|
|
testutils "k8s.io/kubernetes/test/utils"
|
|
|
|
|
utilnet "k8s.io/utils/net"
|
|
|
|
|
|
|
|
|
|
clientset "k8s.io/client-go/kubernetes"
|
|
|
|
@@ -130,39 +128,6 @@ func RunE2ETests(t *testing.T) {
|
|
|
|
|
ginkgo.RunSpecsWithDefaultAndCustomReporters(t, "Kubernetes e2e suite", r)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Run a test container to try and contact the Kubernetes api-server from a pod, wait for it
|
|
|
|
|
// to flip to Ready, log its output and delete it.
|
|
|
|
|
func runKubernetesServiceTestContainer(c clientset.Interface, ns string) {
|
|
|
|
|
path := "test/images/clusterapi-tester/pod.yaml"
|
|
|
|
|
framework.Logf("Parsing pod from %v", path)
|
|
|
|
|
p, err := e2emanifest.PodFromManifest(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
framework.Logf("Failed to parse clusterapi-tester from manifest %v: %v", path, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
p.Namespace = ns
|
|
|
|
|
if _, err := c.CoreV1().Pods(ns).Create(context.TODO(), p, metav1.CreateOptions{}); err != nil {
|
|
|
|
|
framework.Logf("Failed to create %v: %v", p.Name, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
defer func() {
|
|
|
|
|
if err := c.CoreV1().Pods(ns).Delete(context.TODO(), p.Name, metav1.DeleteOptions{}); err != nil {
|
|
|
|
|
framework.Logf("Failed to delete pod %v: %v", p.Name, err)
|
|
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
timeout := 5 * time.Minute
|
|
|
|
|
if err := e2epod.WaitForPodCondition(c, ns, p.Name, "clusterapi-tester", timeout, testutils.PodRunningReady); err != nil {
|
|
|
|
|
framework.Logf("Pod %v took longer than %v to enter running/ready: %v", p.Name, timeout, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
logs, err := e2epod.GetPodLogs(c, ns, p.Name, p.Spec.Containers[0].Name)
|
|
|
|
|
if err != nil {
|
|
|
|
|
framework.Logf("Failed to retrieve logs from %v: %v", p.Name, err)
|
|
|
|
|
} else {
|
|
|
|
|
framework.Logf("Output of clusterapi-tester:\n%v", logs)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
@@ -282,7 +247,6 @@ func setupSuite() {
|
|
|
|
|
if err := e2epod.WaitForPodsRunningReady(c, metav1.NamespaceSystem, int32(framework.TestContext.MinStartupPods), int32(framework.TestContext.AllowedNotReadyNodes), podStartupTimeout, map[string]string{}); err != nil {
|
|
|
|
|
framework.DumpAllNamespaceInfo(c, metav1.NamespaceSystem)
|
|
|
|
|
e2ekubectl.LogFailedContainers(c, metav1.NamespaceSystem, framework.Logf)
|
|
|
|
|
runKubernetesServiceTestContainer(c, metav1.NamespaceDefault)
|
|
|
|
|
framework.Failf("Error waiting for all pods to be running and ready: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|