From 7f613f09b8399388d6711e828fdd911816c23f0b Mon Sep 17 00:00:00 2001 From: xilabao Date: Fri, 17 Mar 2017 17:08:04 +0800 Subject: [PATCH] use healthz api instead of componentstatus in WaitForAPI --- cmd/kubeadm/app/master/BUILD | 1 - cmd/kubeadm/app/master/apiclient.go | 26 ++++---------------------- 2 files changed, 4 insertions(+), 23 deletions(-) diff --git a/cmd/kubeadm/app/master/BUILD b/cmd/kubeadm/app/master/BUILD index 15f5ac2bd28..f587a272ee3 100644 --- a/cmd/kubeadm/app/master/BUILD +++ b/cmd/kubeadm/app/master/BUILD @@ -26,7 +26,6 @@ go_library( "//pkg/kubectl/cmd/util:go_default_library", "//pkg/util/version:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", diff --git a/cmd/kubeadm/app/master/apiclient.go b/cmd/kubeadm/app/master/apiclient.go index 259ae1dd157..1f27fc08913 100644 --- a/cmd/kubeadm/app/master/apiclient.go +++ b/cmd/kubeadm/app/master/apiclient.go @@ -18,13 +18,11 @@ package master import ( "fmt" + "net/http" "time" - apierrs "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" - "k8s.io/client-go/pkg/api/v1" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" ) @@ -44,28 +42,12 @@ func CreateClientAndWaitForAPI(file string) (*clientset.Clientset, error) { func WaitForAPI(client *clientset.Clientset) { start := time.Now() wait.PollInfinite(kubeadmconstants.APICallRetryInterval, func() (bool, error) { - // TODO: use /healthz API instead of this - cs, err := client.ComponentStatuses().List(metav1.ListOptions{}) - if err != nil { - if apierrs.IsForbidden(err) { - fmt.Println("[apiclient] Waiting for API server authorization") - } + healthStatus := 0 + client.Discovery().RESTClient().Get().AbsPath("/healthz").Do().StatusCode(&healthStatus) + if healthStatus != http.StatusOK { return false, nil } - // TODO(phase2) must revisit this when we implement HA - if len(cs.Items) < 3 { - return false, nil - } - for _, item := range cs.Items { - for _, condition := range item.Conditions { - if condition.Type != v1.ComponentHealthy { - fmt.Printf("[apiclient] Control plane component %q is still unhealthy: %#v\n", item.ObjectMeta.Name, item.Conditions) - return false, nil - } - } - } - fmt.Printf("[apiclient] All control plane components are healthy after %f seconds\n", time.Since(start).Seconds()) return true, nil })