From d10255064490f29f12c614a163d171c9822d4e30 Mon Sep 17 00:00:00 2001 From: Benn Linger Date: Thu, 4 Apr 2019 21:43:43 -0400 Subject: [PATCH 1/2] Fixed status checking with non-default apiserver-port. --- cmd/minikube/cmd/start.go | 8 +++++--- cmd/minikube/cmd/status.go | 8 +++++++- pkg/minikube/bootstrapper/bootstrapper.go | 2 +- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 4 ++-- pkg/util/kubeconfig.go | 6 +++--- test/integration/start_stop_delete_test.go | 3 +++ 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index df661362d08a..18a75032bb3d 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -215,7 +215,9 @@ func runStart(cmd *cobra.Command, args []string) { // The kube config must be update must come before bootstrapping, otherwise health checks may use a stale IP kubeconfig := updateKubeConfig(host, &config) bootstrapCluster(bs, cr, runner, config.KubernetesConfig, preexisting) - validateCluster(bs, cr, runner, ip) + + apiserverPort := config.KubernetesConfig.NodePort + validateCluster(bs, cr, runner, ip, apiserverPort) configureMounts() if err = LoadCachedImagesInConfigFile(); err != nil { console.Failure("Unable to load cached images from config file.") @@ -543,7 +545,7 @@ func bootstrapCluster(bs bootstrapper.Bootstrapper, r cruntime.Manager, runner b } // validateCluster validates that the cluster is well-configured and healthy -func validateCluster(bs bootstrapper.Bootstrapper, r cruntime.Manager, runner bootstrapper.CommandRunner, ip string) { +func validateCluster(bs bootstrapper.Bootstrapper, r cruntime.Manager, runner bootstrapper.CommandRunner, ip string, apiserverPort int) { console.OutStyle("verifying-noline", "Verifying component health ...") k8sStat := func() (err error) { st, err := bs.GetKubeletStatus() @@ -558,7 +560,7 @@ func validateCluster(bs bootstrapper.Bootstrapper, r cruntime.Manager, runner bo exit.WithLogEntries("kubelet checks failed", err, logs.FindProblems(r, bs, runner)) } aStat := func() (err error) { - st, err := bs.GetAPIServerStatus(net.ParseIP(ip)) + st, err := bs.GetAPIServerStatus(net.ParseIP(ip), apiserverPort) console.Out(".") if err != nil || st != state.Running.String() { return &pkgutil.RetriableError{Err: fmt.Errorf("apiserver status=%s err=%v", st, err)} diff --git a/cmd/minikube/cmd/status.go b/cmd/minikube/cmd/status.go index b39810318ade..668ee9815a89 100644 --- a/cmd/minikube/cmd/status.go +++ b/cmd/minikube/cmd/status.go @@ -92,7 +92,13 @@ var statusCmd = &cobra.Command{ glog.Errorln("Error host driver ip status:", err) } - apiserverSt, err = clusterBootstrapper.GetAPIServerStatus(ip) + apiserverPort, err := pkgutil.GetPortFromKubeConfig(util.GetKubeConfigPath(), config.GetMachineName()) + if err != nil { + // Fallback to presuming default apiserver port + apiserverPort = pkgutil.APIServerPort + } + + apiserverSt, err = clusterBootstrapper.GetAPIServerStatus(ip, apiserverPort) if err != nil { glog.Errorln("Error apiserver status:", err) } else if apiserverSt != state.Running.String() { diff --git a/pkg/minikube/bootstrapper/bootstrapper.go b/pkg/minikube/bootstrapper/bootstrapper.go index e7d9ed4bbb85..2447a46ac431 100644 --- a/pkg/minikube/bootstrapper/bootstrapper.go +++ b/pkg/minikube/bootstrapper/bootstrapper.go @@ -43,7 +43,7 @@ type Bootstrapper interface { LogCommands(LogOptions) map[string]string SetupCerts(cfg config.KubernetesConfig) error GetKubeletStatus() (string, error) - GetAPIServerStatus(net.IP) (string, error) + GetAPIServerStatus(net.IP, int) (string, error) } const ( diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 6be7e6b2ab6b..cd40886656e5 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -122,8 +122,8 @@ func (k *Bootstrapper) GetKubeletStatus() (string, error) { } // GetAPIServerStatus returns the api-server status -func (k *Bootstrapper) GetAPIServerStatus(ip net.IP) (string, error) { - url := fmt.Sprintf("https://%s:%d/healthz", ip, util.APIServerPort) +func (k *Bootstrapper) GetAPIServerStatus(ip net.IP, apiserverPort int) (string, error) { + url := fmt.Sprintf("https://%s:%d/healthz", ip, apiserverPort) // To avoid: x509: certificate signed by unknown authority tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, diff --git a/pkg/util/kubeconfig.go b/pkg/util/kubeconfig.go index 3545576b6579..863b6c2e206c 100644 --- a/pkg/util/kubeconfig.go +++ b/pkg/util/kubeconfig.go @@ -251,7 +251,7 @@ func UpdateKubeconfigIP(ip net.IP, filename string, machineName string) (bool, e if kip.Equal(ip) { return false, nil } - kport, err := getPortFromKubeConfig(filename, machineName) + kport, err := GetPortFromKubeConfig(filename, machineName) if err != nil { return false, err } @@ -291,8 +291,8 @@ func getIPFromKubeConfig(filename, machineName string) (net.IP, error) { return ip, nil } -// getPortFromKubeConfig returns the Port number stored for minikube in the kubeconfig specified -func getPortFromKubeConfig(filename, machineName string) (int, error) { +// GetPortFromKubeConfig returns the Port number stored for minikube in the kubeconfig specified +func GetPortFromKubeConfig(filename, machineName string) (int, error) { con, err := ReadConfigOrNew(filename) if err != nil { return 0, errors.Wrap(err, "Error getting kubeconfig status") diff --git a/test/integration/start_stop_delete_test.go b/test/integration/start_stop_delete_test.go index 839283654d68..6681548ed7a7 100644 --- a/test/integration/start_stop_delete_test.go +++ b/test/integration/start_stop_delete_test.go @@ -55,6 +55,9 @@ func TestStartStop(t *testing.T) { "--extra-config", "kubeadm.ignore-preflight-errors=SystemVerification", }}, + {"apiserver_port_non_default", []string{ + "--apiserver-port=8444", + }}, } for _, test := range tests { From b7ffe5b7c2e6dc3d0677806f3f29a84faedc3708 Mon Sep 17 00:00:00 2001 From: Benn Linger Date: Fri, 5 Apr 2019 18:36:35 -0400 Subject: [PATCH 2/2] Combined non-default apiserver port test with containerd test --- test/integration/start_stop_delete_test.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/integration/start_stop_delete_test.go b/test/integration/start_stop_delete_test.go index 6681548ed7a7..9cf29a3a377f 100644 --- a/test/integration/start_stop_delete_test.go +++ b/test/integration/start_stop_delete_test.go @@ -46,18 +46,16 @@ func TestStartStop(t *testing.T) { "--extra-config=kubelet.network-plugin=cni", fmt.Sprintf("--kubernetes-version=%s", constants.NewestKubernetesVersion), }}, - {"containerd", []string{ + {"containerd_and_non_default_apiserver_port", []string{ "--container-runtime=containerd", "--docker-opt containerd=/var/run/containerd/containerd.sock", + "--apiserver-port=8444", }}, {"crio_ignore_preflights", []string{ "--container-runtime=crio", "--extra-config", "kubeadm.ignore-preflight-errors=SystemVerification", }}, - {"apiserver_port_non_default", []string{ - "--apiserver-port=8444", - }}, } for _, test := range tests {