【问题标题】:When minikube on Mac is asked for URL, why does it instead start a service in a tunnel?当 Mac 上的 minikube 被要求提供 URL 时,为什么它会在隧道中启动服务?
【发布时间】:2020-11-26 17:31:45
【问题描述】:

我在我的 Mac (Catalina) 中安装了最新的 Docker、Minikube 和 kubectl。我也有一个最近的 MySQL,在 PATH 中正确安装了命令行。我正在使用股票终端 (zsh)。

Docker 启动正常,告诉我它已安装的 pod。

Minikube 可以正常启动,并且 kubectl 可以正常获取有关其工件的所有报告。

Jeromes-MacBook-Pro:cloudnative-statelessness jerome$ kubectl get all
NAME                         READY   STATUS    RESTARTS   AGE
pod/mysql-7dbfd4dbc4-sz8ps   1/1     Running   0          15m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          20m
service/mysql-svc    NodePort    10.111.176.15   <none>        3306:30022/TCP   15m

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mysql   1/1     1            1           15m

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/mysql-7dbfd4dbc4   1         1         1       15m

当我运行 minikube service mysql-svc --url 时,我希望从另一台机器上获得一个 URL,就像这样:http://192.168.99.101:31067。相反,我看到了一些关于在“隧道”中启动服务的信息:

Jeromes-MacBook-Pro:cloudnative-statelessness jerome$ minikube service mysql-svc --url
????  Starting tunnel for service mysql-svc.
|-----------|-----------|-------------|------------------------|
| NAMESPACE |   NAME    | TARGET PORT |          URL           |
|-----------|-----------|-------------|------------------------|
| default   | mysql-svc |             | http://127.0.0.1:64966 |
|-----------|-----------|-------------|------------------------|
http://127.0.0.1:64966
❗  Because you are using a Docker driver on darwin, the terminal needs to be open to run it.

此时终端无响应。

我相信 minikube 服务 SERVICENAME 应该尝试启动服务,并返回该文本块。我也相信 --url 后缀应该只返回 URL 列中的内容,并跳过启动服务。

关于如何在我的 Mac 上获得我想要的结果有什么好的解释吗?

顺便说一句,一旦终端会话声明“因为...”,我如何恢复对终端会话的控制?

谢谢,

杰罗姆。

2020 年 8 月 14 日更新:

我接受了 Saravanan 的建议。我从我的 Mac 上卸载了 Docker,并使用自制软件安装了 docker + docker-machine + virtualbox(参见https://www.robinwieruch.de/docker-macos)。当我运行“minikube service mysql-svc --url”时,我不再遇到隧道问题。谢谢你,萨拉瓦南。

我的问题已经演变成从 Docker Hub 获取正确版本的容器(编译应用,然后通过 docker build 运行)。 YAML 文件在我的帐户中有点,但恐怕我有一个过时的版本。我该怎么做才能在我的 Mac 上覆盖我当前的版本,或者删除 Docker 容器以便 kubectl create 可以获取更新的版本?

【问题讨论】:

    标签: zsh minikube macos-catalina


    【解决方案1】:

    原因是您的 minikube 映像正在容器中运行。 尝试更改配置以在虚拟框中运行它。然后你就可以在没有隧道的情况下到达你的 sql pod。

    # first delete the existing minikube image
    $ minikube delete
    
    # change the minikube driver to virtualbox
    $ minikube config set vm-driver virtualbox
    
    # start minikube again
    $ minikube start
    

    确保在继续之前安装了虚拟盒子

    【讨论】:

    • 我明确安装了“Docker for Mac”而不是 docker + virtualbox。 Max 的 Docker 有 HyperV 等。这会改变你的指令吗?或者,也许,我的 Docker 安装在 Mac Catalina 上应该是什么?
    • 这可能是因为在 docker 和 virtual box 中运行的 minikube 之间的网络差异。我不知道那个网络。我遇到了类似的问题,更改 minikube 驱动程序救了我,我想与您分享。
    • 我已根据robinwieruch.de/docker-macos 上的建议删除了 Docker 并安装了 docker + docker-machine + virtualbox。我不再得到隧道。我已经更新了最初的投诉,并给你一个提示,关于如何确保我从 Docker Hub 获取我的应用程序的最新图像。
    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 2021-12-31
    • 2019-10-23
    • 2013-07-29
    • 2020-04-10
    • 1970-01-01
    • 2020-05-08
    • 2022-01-28
    相关资源
    最近更新 更多