【问题标题】:On a Mac, what IP will represent my laptop from within a minikube cluster?在 Mac 上,什么 IP 将代表 minikube 集群中的笔记本电脑?
【发布时间】:2017-09-17 17:00:07
【问题描述】:

我在我的 Mac 笔记本电脑上运行 minikube。我正在使用 VirtualBox 来托管 minikube 虚拟机,遵循official instructions。

我想要一个要部署到集群中的 pod,以便能够 ping 我将在笔记本电脑上运行的服务器。假设(现在)我没有定义 ExternalName 类型的 Kubernetes 服务来表示该服务器,我应该在我的 pod 中运行的程序中使用什么 IP 或主机名?

编辑:我可以在我的 pod 中 ping 10.0.2.2 并获得回复。但是,尝试在端口 9092 上将 telnet 到 10.0.2.2,我恰好有一个 H2 数据库正在运行,只是挂起。

最后,minikube ssh,这显然让我登录到了 VirtualBox VM,也许吧?以docker 运行?如果这很重要,则会导致上述所有相同的行为,这表明这基本上是一个关于 VirtualBox 的问题。

EDIT #2:重新启动 VirtualBox 解决了连接问题 (!)。尽管如此,10.0.2.2 对我来说仍然很神奇;我想知道那个 IP 是从哪里来的。

【问题讨论】:

    标签: virtualbox kubernetes minikube


    【解决方案1】:

    您应该可以使用vboxnet0 下列出的 ipv4 地址。在ifconfig 的输出列表中查找vboxnet0 接口。或者,地址10.0.2.2 也将从访客映射回主机。

    这个 IP 地址可以从访客内部访问,但不能直接从 pod 内部访问。要从 pod 中访问它,您需要创建一个公开此 IP 地址的无头服务。
    有关如何创建无头服务的信息,请参阅此答案: Minikube expose MySQL running on localhost as service

    例如,我在主机上的端口 :8000 上运行了一个服务器,并执行以下操作以在 pod 中访问它:

    $ kubectl create -f service.yaml
    
    ----service.yaml----
    apiVersion: v1 kind: Service metadata:
        name: my-service spec:
        ports:
            - protocol: TCP
              port: 1443
              targetPort: 8000
    
    $ kubectl create -f endpoint.yaml
    
    ----endpoint.yaml----
    apiVersion: v1
    kind: Endpoints
    metadata:
        name: my-service
    subsets:
        - addresses:
            - ip: 192.168.99.1 #ipv4 address from vboxnet0
          ports:
            - port: 8000
    
    $ kubectl get svc
    NAME         CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
    kubernetes   10.0.0.1     <none>        443/TCP    2h
    my-service   10.0.0.83    <none>        1443/TCP   17m
    

    然后就可以在一个pod中使用10.0.0.83:1443访问宿主服务了。

    【讨论】:

    • 感谢您的回答。我会创建一个无头服务,这需要我创建一个端点,还是一个外部名称类型的服务,我认为不需要我创建一个端点?
    • 我刚刚开始使用 minikube w/virtualbox 中的无头服务访问我的主机上的服务器,使用的 yaml 文件与链接的文件和 ip @ vboxnet0 几乎相同。我认为您也可以使用 ExternalName,但我认为您需要在集群中添加一个 DNS 条目以映射到 IP。不幸的是,我对 ExternalName 不太熟悉。
    • 有趣的是,在我没有其他魔法的情况下,ping 10.0.2.2 在kubectl run -i -t busybox --image=busybox --restart=Never 设置的 shell 提示符中得到了答案。我在哪里可以阅读更多关于这个魔法的信息(对我来说!)10.0.2.2 地址?
    • 除了 virtualbox 总是把它映射回主机之外,我真的不太了解它
    猜你喜欢
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2020-09-27
    相关资源
    最近更新 更多