mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-16 22:53:22 +00:00
Merge pull request #98376 from matthyx/mega
Make all health checks probing consistent
This commit is contained in:
@@ -373,22 +373,15 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod readiness probe, delayed by startup probe
|
||||
Description: A Pod is created with startup and readiness probes. The Container is started by creating /tmp/startup after 45 seconds, delaying the ready state by this amount of time. This is similar to the "Pod readiness probe, with initial delay" test.
|
||||
*/
|
||||
ginkgo.It("should not be ready until startupProbe succeeds", func() {
|
||||
cmd := []string{"/bin/sh", "-c", "echo ok >/tmp/health; sleep 45; echo ok >/tmp/startup; sleep 600"}
|
||||
ginkgo.It("should be ready immediately after startupProbe succeeds", func() {
|
||||
cmd := []string{"/bin/sh", "-c", "echo ok >/tmp/health; sleep 10; echo ok >/tmp/startup; sleep 600"}
|
||||
readinessProbe := &v1.Probe{
|
||||
Handler: v1.Handler{
|
||||
Exec: &v1.ExecAction{
|
||||
Command: []string{"cat", "/tmp/health"},
|
||||
},
|
||||
},
|
||||
Handler: execHandler([]string{"/bin/cat", "/tmp/health"}),
|
||||
InitialDelaySeconds: 0,
|
||||
PeriodSeconds: 60,
|
||||
}
|
||||
startupProbe := &v1.Probe{
|
||||
Handler: v1.Handler{
|
||||
Exec: &v1.ExecAction{
|
||||
Command: []string{"cat", "/tmp/startup"},
|
||||
},
|
||||
},
|
||||
Handler: execHandler([]string{"/bin/cat", "/tmp/startup"}),
|
||||
InitialDelaySeconds: 0,
|
||||
FailureThreshold: 60,
|
||||
}
|
||||
@@ -397,7 +390,15 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
p, err := podClient.Get(context.TODO(), p.Name, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, p.Name, f.Namespace.Name, framework.PodStartTimeout)
|
||||
err = e2epod.WaitForPodContainerStarted(f.ClientSet, f.Namespace.Name, p.Name, 0, framework.PodStartTimeout)
|
||||
framework.ExpectNoError(err)
|
||||
startedTime := time.Now()
|
||||
|
||||
// We assume the pod became ready when the container became ready. This
|
||||
// is true for a single container pod.
|
||||
err = e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, p.Name, f.Namespace.Name, framework.PodStartTimeout)
|
||||
framework.ExpectNoError(err)
|
||||
readyTime := time.Now()
|
||||
|
||||
p, err = podClient.Get(context.TODO(), p.Name, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
@@ -406,17 +407,14 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
framework.ExpectNoError(err)
|
||||
framework.ExpectEqual(isReady, true, "pod should be ready")
|
||||
|
||||
// We assume the pod became ready when the container became ready. This
|
||||
// is true for a single container pod.
|
||||
readyTime, err := GetTransitionTimeForReadyCondition(p)
|
||||
framework.ExpectNoError(err)
|
||||
startedTime, err := GetContainerStartedTime(p, "busybox")
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Container started at %v, pod became ready at %v", startedTime, readyTime)
|
||||
if readyTime.Sub(startedTime) < 40*time.Second {
|
||||
readyIn := readyTime.Sub(startedTime)
|
||||
framework.Logf("Container started at %v, pod became ready at %v, %v after startupProbe succeeded", startedTime, readyTime, readyIn)
|
||||
if readyIn < 0 {
|
||||
framework.Failf("Pod became ready before startupProbe succeeded")
|
||||
}
|
||||
if readyIn > 5*time.Second {
|
||||
framework.Failf("Pod became ready in %v, more than 5s after startupProbe succeeded. It means that the delay readiness probes were not initiated immediately after startup finished.", readyIn)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user