mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Fix problems of not-starting image pullers
This commit is contained in:
parent
f655c06b68
commit
2e3cd93fc8
@ -140,7 +140,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte {
|
|||||||
// #41007. To avoid those pods preventing the whole test runs (and just
|
// #41007. To avoid those pods preventing the whole test runs (and just
|
||||||
// wasting the whole run), we allow for some not-ready pods (with the
|
// wasting the whole run), we allow for some not-ready pods (with the
|
||||||
// number equal to the number of allowed not-ready nodes).
|
// number equal to the number of allowed not-ready nodes).
|
||||||
if err := framework.WaitForPodsRunningReady(c, metav1.NamespaceSystem, int32(framework.TestContext.MinStartupPods), int32(framework.TestContext.AllowedNotReadyNodes), podStartupTimeout, framework.ImagePullerLabels, true); err != nil {
|
if err := framework.WaitForPodsRunningReady(c, metav1.NamespaceSystem, int32(framework.TestContext.MinStartupPods), int32(framework.TestContext.AllowedNotReadyNodes), podStartupTimeout, framework.ImagePullerLabels); err != nil {
|
||||||
framework.DumpAllNamespaceInfo(c, metav1.NamespaceSystem)
|
framework.DumpAllNamespaceInfo(c, metav1.NamespaceSystem)
|
||||||
framework.LogFailedContainers(c, metav1.NamespaceSystem, framework.Logf)
|
framework.LogFailedContainers(c, metav1.NamespaceSystem, framework.Logf)
|
||||||
runKubernetesServiceTestContainer(c, metav1.NamespaceDefault)
|
runKubernetesServiceTestContainer(c, metav1.NamespaceDefault)
|
||||||
|
@ -485,29 +485,19 @@ func WaitForPodsSuccess(c clientset.Interface, ns string, successPodLabels map[s
|
|||||||
// ready. It has separate behavior from other 'wait for' pods functions in
|
// ready. It has separate behavior from other 'wait for' pods functions in
|
||||||
// that it requests the list of pods on every iteration. This is useful, for
|
// that it requests the list of pods on every iteration. This is useful, for
|
||||||
// example, in cluster startup, because the number of pods increases while
|
// example, in cluster startup, because the number of pods increases while
|
||||||
// waiting.
|
// waiting. All pods that are in SUCCESS state are not counted.
|
||||||
// If ignoreLabels is not empty, pods matching this selector are ignored and
|
//
|
||||||
// this function waits for minPods to enter Running/Ready and for all pods
|
// If ignoreLabels is not empty, pods matching this selector are ignored.
|
||||||
// matching ignoreLabels to enter Success phase. Otherwise an error is returned
|
func WaitForPodsRunningReady(c clientset.Interface, ns string, minPods, allowedNotReadyPods int32, timeout time.Duration, ignoreLabels map[string]string) error {
|
||||||
// even if there are minPods pods, some of which are in Running/Ready
|
|
||||||
// and some in Success. This is to allow the client to decide if "Success"
|
|
||||||
// means "Ready" or not.
|
|
||||||
// If skipSucceeded is true, any pods that are Succeeded are not counted.
|
|
||||||
func WaitForPodsRunningReady(c clientset.Interface, ns string, minPods, allowedNotReadyPods int32, timeout time.Duration, ignoreLabels map[string]string, skipSucceeded bool) error {
|
|
||||||
ignoreSelector := labels.SelectorFromSet(ignoreLabels)
|
ignoreSelector := labels.SelectorFromSet(ignoreLabels)
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
Logf("Waiting up to %v for all pods (need at least %d) in namespace '%s' to be running and ready",
|
Logf("Waiting up to %v for all pods (need at least %d) in namespace '%s' to be running and ready",
|
||||||
timeout, minPods, ns)
|
timeout, minPods, ns)
|
||||||
wg := sync.WaitGroup{}
|
wg := sync.WaitGroup{}
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
var waitForSuccessError error
|
|
||||||
var ignoreNotReady bool
|
var ignoreNotReady bool
|
||||||
badPods := []v1.Pod{}
|
badPods := []v1.Pod{}
|
||||||
desiredPods := 0
|
desiredPods := 0
|
||||||
go func() {
|
|
||||||
waitForSuccessError = WaitForPodsSuccess(c, ns, ignoreLabels, timeout)
|
|
||||||
wg.Done()
|
|
||||||
}()
|
|
||||||
|
|
||||||
if wait.PollImmediate(Poll, timeout, func() (bool, error) {
|
if wait.PollImmediate(Poll, timeout, func() (bool, error) {
|
||||||
// We get the new list of pods, replication controllers, and
|
// We get the new list of pods, replication controllers, and
|
||||||
@ -554,7 +544,7 @@ func WaitForPodsRunningReady(c clientset.Interface, ns string, minPods, allowedN
|
|||||||
switch {
|
switch {
|
||||||
case res && err == nil:
|
case res && err == nil:
|
||||||
nOk++
|
nOk++
|
||||||
case pod.Status.Phase == v1.PodSucceeded && skipSucceeded:
|
case pod.Status.Phase == v1.PodSucceeded:
|
||||||
continue
|
continue
|
||||||
case pod.Status.Phase == v1.PodSucceeded:
|
case pod.Status.Phase == v1.PodSucceeded:
|
||||||
Logf("The status of Pod %s is Succeeded which is unexpected", pod.ObjectMeta.Name)
|
Logf("The status of Pod %s is Succeeded which is unexpected", pod.ObjectMeta.Name)
|
||||||
@ -590,10 +580,6 @@ func WaitForPodsRunningReady(c clientset.Interface, ns string, minPods, allowedN
|
|||||||
}
|
}
|
||||||
Logf("Number of not-ready pods is allowed.")
|
Logf("Number of not-ready pods is allowed.")
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
if waitForSuccessError != nil {
|
|
||||||
return waitForSuccessError
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ var _ = framework.KubeDescribe("Nodes [Disruptive]", func() {
|
|||||||
// Many e2e tests assume that the cluster is fully healthy before they start. Wait until
|
// Many e2e tests assume that the cluster is fully healthy before they start. Wait until
|
||||||
// the cluster is restored to health.
|
// the cluster is restored to health.
|
||||||
By("waiting for system pods to successfully restart")
|
By("waiting for system pods to successfully restart")
|
||||||
err := framework.WaitForPodsRunningReady(c, metav1.NamespaceSystem, systemPodsNo, 0, framework.PodReadyBeforeTimeout, ignoreLabels, true)
|
err := framework.WaitForPodsRunningReady(c, metav1.NamespaceSystem, systemPodsNo, 0, framework.PodReadyBeforeTimeout, ignoreLabels)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
By("waiting for image prepulling pods to complete")
|
By("waiting for image prepulling pods to complete")
|
||||||
framework.WaitForPodsSuccess(c, metav1.NamespaceSystem, framework.ImagePullerLabels, imagePrePullingTimeout)
|
framework.WaitForPodsSuccess(c, metav1.NamespaceSystem, framework.ImagePullerLabels, imagePrePullingTimeout)
|
||||||
|
@ -92,7 +92,7 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = framework.WaitForPodsRunningReady(cs, metav1.NamespaceSystem, int32(systemPodsNo), 0, framework.PodReadyBeforeTimeout, ignoreLabels, true)
|
err = framework.WaitForPodsRunningReady(cs, metav1.NamespaceSystem, int32(systemPodsNo), 0, framework.PodReadyBeforeTimeout, ignoreLabels)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
for _, node := range nodeList.Items {
|
for _, node := range nodeList.Items {
|
||||||
|
Loading…
Reference in New Issue
Block a user