diff --git a/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go b/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go index 39c29a1640..2efde14637 100644 --- a/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go +++ b/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go @@ -143,6 +143,22 @@ func APIServerVersionMatch(client *kubernetes.Clientset, expected string) error return nil } +// WaitForAPIServerStatus waits for 'to' duration to get apiserver pod running or stopped +// this functions is intended to use in situations where apiserver process can be recreated +// by container runtime restart for example and there is a gap before it comes back +func WaitForAPIServerStatus(cr command.Runner, to time.Duration, hostname string, port int) (state.State, error) { + var st state.State + var err error + err = wait.PollImmediate(200*time.Millisecond, to, func() (bool, error) { + st, err := APIServerStatus(cr, hostname, port) + if st == state.Stopped { + return false, nil + } + return true, err + }) + return st, err +} + // APIServerStatus returns apiserver status in libmachine style state.State func APIServerStatus(cr command.Runner, hostname string, port int) (state.State, error) { klog.Infof("Checking apiserver status ...") diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 6ef909ffad..0c7b4b2274 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -569,15 +569,8 @@ func (k *Bootstrapper) needsReconfigure(conf string, hostname string, port int, return true } // cruntime.Enable() may restart kube-apiserver but does not wait for it to return back - var st state.State - err := wait.PollImmediate(500*time.Millisecond, 3*time.Second, func() (bool, error) { - var ierr error - st, ierr = kverify.APIServerStatus(k.c, hostname, port) - if st == state.Stopped { - return false, nil - } - return true, ierr - }) + apiStatusTimeout := 1500 * time.Millisecond + st, err := kverify.WaitForAPIServerStatus(k.c, apiStatusTimeout, hostname, port) if err != nil { klog.Infof("needs reconfigure: apiserver error: %v", err) return true