mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Merge pull request #36918 from bprashanth/proxy_retry
Automatic merge from submit-queue Add clarity/retries to proxy url test Improve one segment of the kube-proxy networking test by: 1. Retrying for 30s 2. Bucketing into 2 failure modes 3. Adding some clarity by describing the exec pod on failure Althought 1 shouldn't be necessary, I don't think we lose anything if the kube-proxy convenience endpoint doesn't respond immediately, and if it fails for 30s straight it is indicative of something that requires attention probably within 1.5. Fixes https://github.com/kubernetes/kubernetes/issues/32436
This commit is contained in:
commit
4dd17995fa
@ -269,8 +269,33 @@ func (config *NetworkingTestConfig) DialFromNode(protocol, targetIP string, targ
|
||||
func (config *NetworkingTestConfig) GetSelfURL(path string, expected string) {
|
||||
cmd := fmt.Sprintf("curl -q -s --connect-timeout 1 http://localhost:10249%s", path)
|
||||
By(fmt.Sprintf("Getting kube-proxy self URL %s", path))
|
||||
stdout := RunHostCmdOrDie(config.Namespace, config.HostTestContainerPod.Name, cmd)
|
||||
Expect(strings.Contains(stdout, expected)).To(BeTrue())
|
||||
|
||||
// These are arbitrary timeouts. The curl command should pass on first try,
|
||||
// unless kubeproxy is starved/bootstrapping/restarting etc.
|
||||
const retryInterval = 1 * time.Second
|
||||
const retryTimeout = 30 * time.Second
|
||||
podName := config.HostTestContainerPod.Name
|
||||
var msg string
|
||||
if pollErr := wait.PollImmediate(retryInterval, retryTimeout, func() (bool, error) {
|
||||
stdout, err := RunHostCmd(config.Namespace, podName, cmd)
|
||||
if err != nil {
|
||||
msg = fmt.Sprintf("failed executing cmd %v in %v/%v: %v", cmd, config.Namespace, podName, err)
|
||||
Logf(msg)
|
||||
return false, nil
|
||||
}
|
||||
if !strings.Contains(stdout, expected) {
|
||||
msg = fmt.Sprintf("successfully executed %v in %v/%v, but output '%v' doesn't contain expected string '%v'", cmd, config.Namespace, podName, stdout, expected)
|
||||
Logf(msg)
|
||||
return false, nil
|
||||
}
|
||||
return true, nil
|
||||
}); pollErr != nil {
|
||||
Logf("\nOutput of kubectl describe pod %v/%v:\n", config.Namespace, podName)
|
||||
desc, _ := RunKubectl(
|
||||
"describe", "pod", podName, fmt.Sprintf("--namespace=%v", config.Namespace))
|
||||
Logf("%s", desc)
|
||||
Failf("Timed out in %v: %v", retryTimeout, msg)
|
||||
}
|
||||
}
|
||||
|
||||
func (config *NetworkingTestConfig) createNetShellPodSpec(podName string, node string) *api.Pod {
|
||||
|
Loading…
Reference in New Issue
Block a user