mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Fix failures in up and down services in large clusters
This commit is contained in:
parent
3c822c0b3c
commit
9961b8021b
@ -943,12 +943,12 @@ var _ = framework.KubeDescribe("Services", func() {
|
|||||||
svcName := fmt.Sprintf("%v.%v", serviceName, f.Namespace.Name)
|
svcName := fmt.Sprintf("%v.%v", serviceName, f.Namespace.Name)
|
||||||
By("waiting for endpoints of Service with DNS name " + svcName)
|
By("waiting for endpoints of Service with DNS name " + svcName)
|
||||||
|
|
||||||
createExecPodOrFail(f.Client, f.Namespace.Name, "exec")
|
execPodName := createExecPodOrFail(f.Client, f.Namespace.Name, "execpod-")
|
||||||
cmd := fmt.Sprintf("wget -qO- %v", svcName)
|
cmd := fmt.Sprintf("wget -qO- %v", svcName)
|
||||||
var stdout string
|
var stdout string
|
||||||
if pollErr := wait.PollImmediate(framework.Poll, kubeProxyLagTimeout, func() (bool, error) {
|
if pollErr := wait.PollImmediate(framework.Poll, kubeProxyLagTimeout, func() (bool, error) {
|
||||||
var err error
|
var err error
|
||||||
stdout, err = framework.RunHostCmd(f.Namespace.Name, "exec", cmd)
|
stdout, err = framework.RunHostCmd(f.Namespace.Name, execPodName, cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Logf("expected un-ready endpoint for Service %v, stdout: %v, err %v", t.name, stdout, err)
|
framework.Logf("expected un-ready endpoint for Service %v, stdout: %v, err %v", t.name, stdout, err)
|
||||||
return false, nil
|
return false, nil
|
||||||
@ -1094,13 +1094,14 @@ func validateEndpointsOrFail(c *client.Client, namespace, serviceName string, ex
|
|||||||
|
|
||||||
// createExecPodOrFail creates a simple busybox pod in a sleep loop used as a
|
// createExecPodOrFail creates a simple busybox pod in a sleep loop used as a
|
||||||
// vessel for kubectl exec commands.
|
// vessel for kubectl exec commands.
|
||||||
func createExecPodOrFail(c *client.Client, ns, name string) {
|
// Returns the name of the created pod.
|
||||||
|
func createExecPodOrFail(c *client.Client, ns, generateName string) string {
|
||||||
framework.Logf("Creating new exec pod")
|
framework.Logf("Creating new exec pod")
|
||||||
immediate := int64(0)
|
immediate := int64(0)
|
||||||
pod := &api.Pod{
|
pod := &api.Pod{
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
Name: name,
|
GenerateName: generateName,
|
||||||
Namespace: ns,
|
Namespace: ns,
|
||||||
},
|
},
|
||||||
Spec: api.PodSpec{
|
Spec: api.PodSpec{
|
||||||
TerminationGracePeriodSeconds: &immediate,
|
TerminationGracePeriodSeconds: &immediate,
|
||||||
@ -1113,16 +1114,17 @@ func createExecPodOrFail(c *client.Client, ns, name string) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err := c.Pods(ns).Create(pod)
|
created, err := c.Pods(ns).Create(pod)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
err = wait.PollImmediate(framework.Poll, 5*time.Minute, func() (bool, error) {
|
err = wait.PollImmediate(framework.Poll, 5*time.Minute, func() (bool, error) {
|
||||||
retrievedPod, err := c.Pods(pod.Namespace).Get(pod.Name)
|
retrievedPod, err := c.Pods(pod.Namespace).Get(created.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
return retrievedPod.Status.Phase == api.PodRunning, nil
|
return retrievedPod.Status.Phase == api.PodRunning, nil
|
||||||
})
|
})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
return created.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
func createPodOrFail(c *client.Client, ns, name string, labels map[string]string, containerPorts []api.ContainerPort) {
|
func createPodOrFail(c *client.Client, ns, name string, labels map[string]string, containerPorts []api.ContainerPort) {
|
||||||
@ -1406,8 +1408,7 @@ func stopServeHostnameService(c *client.Client, ns, name string) error {
|
|||||||
// in the cluster. Each pod in the service is expected to echo its name. These
|
// in the cluster. Each pod in the service is expected to echo its name. These
|
||||||
// names are compared with the given expectedPods list after a sort | uniq.
|
// names are compared with the given expectedPods list after a sort | uniq.
|
||||||
func verifyServeHostnameServiceUp(c *client.Client, ns, host string, expectedPods []string, serviceIP string, servicePort int) error {
|
func verifyServeHostnameServiceUp(c *client.Client, ns, host string, expectedPods []string, serviceIP string, servicePort int) error {
|
||||||
execPodName := "execpod"
|
execPodName := createExecPodOrFail(c, ns, "execpod-")
|
||||||
createExecPodOrFail(c, ns, execPodName)
|
|
||||||
defer func() {
|
defer func() {
|
||||||
deletePodOrFail(c, ns, execPodName)
|
deletePodOrFail(c, ns, execPodName)
|
||||||
}()
|
}()
|
||||||
|
Loading…
Reference in New Issue
Block a user