在Mac上,什么IP代表我的笔记本电脑来自minikube集群?

时间:2017-04-20 21:14:44

标签: virtualbox kubernetes minikube

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

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

编辑:从我的广告连播中我可ping 10.0.2.2获得答案。但是,在端口telnet上尝试10.0.2.29092,我碰巧运行了H2数据库,只是挂起。

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

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

1 个答案:

答案 0 :(得分:4)

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

此IP地址可以从访客中访问,但不能直接从访问者中访问。要使其可以从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

然后,您可以在窗格中使用10.0.0.83:1443访问主机服务。