From 802586f3b9d39780d164adb8302233b1dc0976cf Mon Sep 17 00:00:00 2001 From: Thomas Stromberg Date: Thu, 16 May 2019 13:42:35 -0700 Subject: [PATCH] Use waitForAPIServer, as it gives better signal than asking the apiserver about itself --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index cba9db9890..e65ad14498 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -71,7 +71,6 @@ type pod struct { // PodsByLayer are queries we run when health checking, sorted roughly by dependency layer var PodsByLayer = []pod{ - {"apiserver", "component", "kube-apiserver"}, {"proxy", "k8s-app", "kube-proxy"}, {"etcd", "component", "etcd"}, {"scheduler", "component", "kube-scheduler"}, @@ -257,12 +256,19 @@ func (k *Bootstrapper) WaitCluster(k8s config.KubernetesConfig) error { // by a CNI plugin which is usually started after minikube has been brought // up. Otherwise, minikube won't start, as "k8s-app" pods are not ready. componentsOnly := k8s.NetworkPlugin == "cni" - console.OutStyle("waiting-pods", "Verifying: ") + console.OutStyle("waiting-pods", "Verifying:") client, err := util.GetClient() if err != nil { return errors.Wrap(err, "k8s client") } + // Wait until the apiserver can answer queries properly. We don't care if the apiserver + // pod shows up as registered, but need the webserver for all subsequent queries. + console.Out(" apiserver") + if err := k.waitForAPIServer(k8s); err != nil { + return errors.Wrap(err, "waiting for apiserver") + } + for _, p := range PodsByLayer { if componentsOnly && p.key != "component" { continue