mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
Revert "Merge pull request #93837 from jayunit100/DialFromContainerB"
This reverts commit61490bba46
, reversing changes made to9ecab1b4b2
. Some methods from the networking e2e tools are dialing from a containter to another container, and failing the test if there was no connectivity. This PR modified the methods to return an error instead of failing the test. However, these methods were used by other tests in the framework, and they are not checking if the method returns an error, expecting that the method fail the test. With this change, any connectivity problem will go unnoticed on the tests that are not asserting the error, so we need to revert to previous state.
This commit is contained in:
parent
0b8c2bf1a1
commit
f7a28c3904
@ -18,7 +18,6 @@ package common
|
||||
|
||||
import (
|
||||
"github.com/onsi/ginkgo"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2enetwork "k8s.io/kubernetes/test/e2e/framework/network"
|
||||
@ -29,45 +28,6 @@ var _ = ginkgo.Describe("[sig-network] Networking", func() {
|
||||
|
||||
ginkgo.Describe("Granular Checks: Pods", func() {
|
||||
|
||||
checkNodeConnectivity := func(config *e2enetwork.NetworkingTestConfig, protocol string, port int) {
|
||||
// breadth first poll to quickly estimate failure.
|
||||
failedPodsByHost := map[string][]*v1.Pod{}
|
||||
// First time, we'll quickly try all pods, breadth first.
|
||||
for _, endpointPod := range config.EndpointPods {
|
||||
framework.Logf("Breadth first check of %v on host %v...", endpointPod.Status.PodIP, endpointPod.Status.HostIP)
|
||||
if err := config.DialFromTestContainer(protocol, endpointPod.Status.PodIP, port, 1, 0, sets.NewString(endpointPod.Name)); err != nil {
|
||||
if _, ok := failedPodsByHost[endpointPod.Status.HostIP]; !ok {
|
||||
failedPodsByHost[endpointPod.Status.HostIP] = []*v1.Pod{}
|
||||
}
|
||||
failedPodsByHost[endpointPod.Status.HostIP] = append(failedPodsByHost[endpointPod.Status.HostIP], endpointPod)
|
||||
framework.Logf("...failed...will try again in next pass")
|
||||
}
|
||||
}
|
||||
errors := []error{}
|
||||
// Second time, we pass through pods more carefully...
|
||||
framework.Logf("Going to retry %v out of %v pods....", len(failedPodsByHost), len(config.EndpointPods))
|
||||
for host, failedPods := range failedPodsByHost {
|
||||
framework.Logf("Doublechecking %v pods in host %v which werent seen the first time.", len(failedPods), host)
|
||||
for _, endpointPod := range failedPods {
|
||||
framework.Logf("Now attempting to probe pod [[[ %v ]]]", endpointPod.Status.PodIP)
|
||||
if err := config.DialFromTestContainer(protocol, endpointPod.Status.PodIP, port, config.MaxTries, 0, sets.NewString(endpointPod.Name)); err != nil {
|
||||
errors = append(errors, err)
|
||||
} else {
|
||||
framework.Logf("Was able to reach %v on %v ", endpointPod.Status.PodIP, endpointPod.Status.HostIP)
|
||||
}
|
||||
framework.Logf("... Done probing pod [[[ %v ]]]", endpointPod.Status.PodIP)
|
||||
}
|
||||
framework.Logf("succeeded at polling %v out of %v connections", len(config.EndpointPods)-len(errors), len(config.EndpointPods))
|
||||
}
|
||||
if len(errors) > 0 {
|
||||
framework.Logf("pod polling failure summary:")
|
||||
for _, e := range errors {
|
||||
framework.Logf("Collected error: %v", e)
|
||||
}
|
||||
framework.Failf("failed, %v out of %v connections failed", len(errors), len(config.EndpointPods))
|
||||
}
|
||||
}
|
||||
|
||||
// Try to hit all endpoints through a test container, retry 5 times,
|
||||
// expect exactly one unique hostname. Each of these endpoints reports
|
||||
// its own hostname.
|
||||
@ -79,7 +39,9 @@ var _ = ginkgo.Describe("[sig-network] Networking", func() {
|
||||
*/
|
||||
framework.ConformanceIt("should function for intra-pod communication: http [NodeConformance]", func() {
|
||||
config := e2enetwork.NewCoreNetworkingTestConfig(f, false)
|
||||
checkNodeConnectivity(config, "http", e2enetwork.EndpointHTTPPort)
|
||||
for _, endpointPod := range config.EndpointPods {
|
||||
config.DialFromTestContainer("http", endpointPod.Status.PodIP, e2enetwork.EndpointHTTPPort, config.MaxTries, 0, sets.NewString(endpointPod.Name))
|
||||
}
|
||||
})
|
||||
|
||||
/*
|
||||
@ -90,7 +52,9 @@ var _ = ginkgo.Describe("[sig-network] Networking", func() {
|
||||
*/
|
||||
framework.ConformanceIt("should function for intra-pod communication: udp [NodeConformance]", func() {
|
||||
config := e2enetwork.NewCoreNetworkingTestConfig(f, false)
|
||||
checkNodeConnectivity(config, "udp", e2enetwork.EndpointUDPPort)
|
||||
for _, endpointPod := range config.EndpointPods {
|
||||
config.DialFromTestContainer("udp", endpointPod.Status.PodIP, e2enetwork.EndpointUDPPort, config.MaxTries, 0, sets.NewString(endpointPod.Name))
|
||||
}
|
||||
})
|
||||
|
||||
/*
|
||||
|
@ -167,17 +167,17 @@ type NetexecDialResponse struct {
|
||||
}
|
||||
|
||||
// DialFromEndpointContainer executes a curl via kubectl exec in an endpoint container.
|
||||
func (config *NetworkingTestConfig) DialFromEndpointContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String) error {
|
||||
return config.DialFromContainer(protocol, echoHostname, config.EndpointPods[0].Status.PodIP, targetIP, EndpointHTTPPort, targetPort, maxTries, minTries, expectedEps)
|
||||
func (config *NetworkingTestConfig) DialFromEndpointContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String) {
|
||||
config.DialFromContainer(protocol, echoHostname, config.EndpointPods[0].Status.PodIP, targetIP, EndpointHTTPPort, targetPort, maxTries, minTries, expectedEps)
|
||||
}
|
||||
|
||||
// DialFromTestContainer executes a curl via kubectl exec in a test container.
|
||||
func (config *NetworkingTestConfig) DialFromTestContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String) error {
|
||||
return config.DialFromContainer(protocol, echoHostname, config.TestContainerPod.Status.PodIP, targetIP, testContainerHTTPPort, targetPort, maxTries, minTries, expectedEps)
|
||||
func (config *NetworkingTestConfig) DialFromTestContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String) {
|
||||
config.DialFromContainer(protocol, echoHostname, config.TestContainerPod.Status.PodIP, targetIP, testContainerHTTPPort, targetPort, maxTries, minTries, expectedEps)
|
||||
}
|
||||
|
||||
// DialEchoFromTestContainer executes a curl via kubectl exec in a test container. The response is expected to match the echoMessage.
|
||||
func (config *NetworkingTestConfig) DialEchoFromTestContainer(protocol, targetIP string, targetPort, maxTries, minTries int, echoMessage string) error {
|
||||
func (config *NetworkingTestConfig) DialEchoFromTestContainer(protocol, targetIP string, targetPort, maxTries, minTries int, echoMessage string) {
|
||||
expectedResponse := sets.NewString()
|
||||
expectedResponse.Insert(echoMessage)
|
||||
var dialCommand string
|
||||
@ -191,7 +191,7 @@ func (config *NetworkingTestConfig) DialEchoFromTestContainer(protocol, targetIP
|
||||
} else {
|
||||
dialCommand = fmt.Sprintf("echo%%20%s", echoMessage)
|
||||
}
|
||||
return config.DialFromContainer(protocol, dialCommand, config.TestContainerPod.Status.PodIP, targetIP, testContainerHTTPPort, targetPort, maxTries, minTries, expectedResponse)
|
||||
config.DialFromContainer(protocol, dialCommand, config.TestContainerPod.Status.PodIP, targetIP, testContainerHTTPPort, targetPort, maxTries, minTries, expectedResponse)
|
||||
}
|
||||
|
||||
// diagnoseMissingEndpoints prints debug information about the endpoints that
|
||||
@ -248,8 +248,7 @@ func makeCURLDialCommand(ipPort, dialCmd, protocol, targetIP string, targetPort
|
||||
// maxTries == minTries will confirm that we see the expected endpoints and no
|
||||
// more for maxTries. Use this if you want to eg: fail a readiness check on a
|
||||
// pod and confirm it doesn't show up as an endpoint.
|
||||
// Returns nil if no error, or error message if failed after trying maxTries.
|
||||
func (config *NetworkingTestConfig) DialFromContainer(protocol, dialCommand, containerIP, targetIP string, containerHTTPPort, targetPort, maxTries, minTries int, expectedResponses sets.String) error {
|
||||
func (config *NetworkingTestConfig) DialFromContainer(protocol, dialCommand, containerIP, targetIP string, containerHTTPPort, targetPort, maxTries, minTries int, expectedResponses sets.String) {
|
||||
ipPort := net.JoinHostPort(containerIP, strconv.Itoa(containerHTTPPort))
|
||||
cmd := makeCURLDialCommand(ipPort, dialCommand, protocol, targetIP, targetPort)
|
||||
|
||||
@ -274,19 +273,16 @@ func (config *NetworkingTestConfig) DialFromContainer(protocol, dialCommand, con
|
||||
|
||||
// Check against i+1 so we exit if minTries == maxTries.
|
||||
if (responses.Equal(expectedResponses) || responses.Len() == 0 && expectedResponses.Len() == 0) && i+1 >= minTries {
|
||||
framework.Logf("reached %v after %v/%v tries", targetIP, i, maxTries)
|
||||
return nil
|
||||
return
|
||||
}
|
||||
// TODO: get rid of this delay #36281
|
||||
time.Sleep(hitEndpointRetryDelay)
|
||||
}
|
||||
|
||||
if dialCommand == echoHostname {
|
||||
config.diagnoseMissingEndpoints(responses)
|
||||
}
|
||||
returnMsg := fmt.Errorf("did not find expected responses... \nTries %d\nCommand %v\nretrieved %v\nexpected %v", maxTries, cmd, responses, expectedResponses)
|
||||
framework.Logf("encountered error during dial (%v)", returnMsg)
|
||||
return returnMsg
|
||||
|
||||
framework.Failf("Failed to find expected responses:\nTries %d\nCommand %v\nretrieved %v\nexpected %v\n", maxTries, cmd, responses, expectedResponses)
|
||||
}
|
||||
|
||||
// GetEndpointsFromTestContainer executes a curl via kubectl exec in a test container.
|
||||
@ -681,7 +677,6 @@ func (config *NetworkingTestConfig) setupCore(selector map[string]string) {
|
||||
|
||||
epCount := len(config.EndpointPods)
|
||||
config.MaxTries = epCount*epCount + testTries
|
||||
framework.Logf("Setting MaxTries for pod polling to %v for networking test based on endpoint count %v", config.MaxTries, epCount)
|
||||
}
|
||||
|
||||
// setup includes setupCore and also sets up services
|
||||
|
Loading…
Reference in New Issue
Block a user