diff --git a/pkg/drivers/kic/oci/oci.go b/pkg/drivers/kic/oci/oci.go index 50db161f58b4836202b12b2c5515e02198ed868a..54bf60f1d16da2586c2802421b86a70024cca5e0 100644 --- a/pkg/drivers/kic/oci/oci.go +++ b/pkg/drivers/kic/oci/oci.go @@ -400,7 +400,7 @@ func HostPortBinding(ociBinary string, ociID string, contPort int) (int, error) cmd := exec.Command(ociBinary, "inspect", "-f", fmt.Sprintf("'{{(index (index .NetworkSettings.Ports \"%d/tcp\") 0).HostPort}}'", contPort), ociID) out, err := cmd.CombinedOutput() if err != nil { - return 0, errors.Wrapf(err, "getting host-bind port %q for container ID %q", contPort, ociID) + return 0, errors.Wrapf(err, "getting host-bind port %d for container ID %q, output %s", contPort, ociID, out) } o := strings.Trim(string(out), "\n") o = strings.Trim(o, "'") diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index ea6c524849e93c6395ce771ad1d31acf12047983..ad2f481dd521339aede64ff61dd11882936a7c3e 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -39,6 +39,7 @@ import ( "k8s.io/client-go/kubernetes" kconst "k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/minikube/pkg/drivers/kic" + "k8s.io/minikube/pkg/drivers/kic/oci" "k8s.io/minikube/pkg/kapi" "k8s.io/minikube/pkg/minikube/assets" "k8s.io/minikube/pkg/minikube/bootstrapper" @@ -249,7 +250,7 @@ func (k *Bootstrapper) StartCluster(cfg config.MachineConfig) error { if !driver.IsKIC(cfg.VMDriver) { // TODO: skip for both after verifications https://github.com/kubernetes/minikube/issues/6239 glog.Infof("Configuring cluster permissions ...") elevate := func() error { - client, err := k.client(cp) + client, err := k.client(cp.IP, cp.Port) if err != nil { return err } @@ -269,7 +270,7 @@ func (k *Bootstrapper) StartCluster(cfg config.MachineConfig) error { } // client sets and returns a Kubernetes client to use to speak to a kubeadm launched apiserver -func (k *Bootstrapper) client(n config.Node) (*kubernetes.Clientset, error) { +func (k *Bootstrapper) client(ip string, port int) (*kubernetes.Clientset, error) { if k.k8sClient != nil { return k.k8sClient, nil } @@ -279,7 +280,7 @@ func (k *Bootstrapper) client(n config.Node) (*kubernetes.Clientset, error) { return nil, errors.Wrap(err, "client config") } - endpoint := fmt.Sprintf("https://%s", net.JoinHostPort(n.IP, strconv.Itoa(n.Port))) + endpoint := fmt.Sprintf("https://%s", net.JoinHostPort(ip, strconv.Itoa(port))) if cc.Host != endpoint { glog.Errorf("Overriding stale ClientConfig host %s with %s", cc.Host, endpoint) cc.Host = endpoint @@ -302,11 +303,21 @@ func (k *Bootstrapper) WaitForCluster(cfg config.MachineConfig, timeout time.Dur if err := kverify.APIServerProcess(k.c, start, timeout); err != nil { return err } - if err := kverify.APIServerIsRunning(start, cp.IP, cp.Port, timeout); err != nil { + + ip := cp.IP + port := cp.Port + if driver.IsKIC(cfg.VMDriver) { + ip = kic.DefaultBindIPV4 + port, err = oci.HostPortBinding(cfg.VMDriver, cfg.Name, port) + if err != nil { + return errors.Wrapf(err, "get host-bind port %d for container %s", port, cfg.Name) + } + } + if err := kverify.APIServerIsRunning(start, ip, port, timeout); err != nil { return err } - c, err := k.client(cp) + c, err := k.client(ip, port) if err != nil { return errors.Wrap(err, "get k8s client") } @@ -361,7 +372,7 @@ func (k *Bootstrapper) restartCluster(cfg config.MachineConfig) error { } for _, n := range cfg.Nodes { - client, err := k.client(n) + client, err := k.client(n.IP, n.Port) if err != nil { return errors.Wrap(err, "getting k8s client") } diff --git a/pkg/minikube/registry/drvs/docker/docker.go b/pkg/minikube/registry/drvs/docker/docker.go index e9cb5309c7171261b3beff7693fc1e108e5b447f..bb7df86abdf5aac7632717112944d688fbda104c 100644 --- a/pkg/minikube/registry/drvs/docker/docker.go +++ b/pkg/minikube/registry/drvs/docker/docker.go @@ -43,12 +43,13 @@ func init() { func configure(mc config.MachineConfig) interface{} { return kic.NewDriver(kic.Config{ - MachineName: mc.Name, - StorePath: localpath.MiniPath(), - ImageDigest: kic.BaseImage, - CPU: mc.CPUs, - Memory: mc.Memory, - OCIBinary: oci.Docker, + MachineName: mc.Name, + StorePath: localpath.MiniPath(), + ImageDigest: kic.BaseImage, + CPU: mc.CPUs, + Memory: mc.Memory, + OCIBinary: oci.Docker, + APIServerPort: mc.Nodes[0].Port, }) }