Virtualbox 在Mac电脑上,minikube集群中的哪个IP代表我的笔记本电脑?

Virtualbox 在Mac电脑上,minikube集群中的哪个IP代表我的笔记本电脑?,virtualbox,kubernetes,minikube,Virtualbox,Kubernetes,Minikube,我正在Mac笔记本电脑上运行minikube。我使用VirtualBox来托管minikube虚拟机,如下所示 我想要一个pod,我将部署到集群中,以便能够ping我将在笔记本电脑上运行的服务器。假设(目前)我没有定义ExternalName类型的Kubernetes服务来表示该服务器,那么我应该在pod中运行的程序中使用什么IP或主机名 编辑:从我的pod中,我可以ping 10.0.2.2并获得答案。然而,在端口9092上尝试telnet到10.0.2.2,我碰巧有一个H2数据库在运行,只是

我正在Mac笔记本电脑上运行minikube。我使用VirtualBox来托管minikube虚拟机,如下所示

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

编辑:从我的pod中,我可以
ping 10.0.2.2
并获得答案。然而,在端口
9092
上尝试
telnet
10.0.2.2
,我碰巧有一个H2数据库在运行,只是挂起了

最后,
minikube-ssh
,它显然让我登录到VirtualBox虚拟机,也许?以码头工人的身份运行?如果这很重要的话,会导致上面所有相同的行为,这表明这基本上是一个关于VirtualBox的问题


编辑#2:重新启动VirtualBox解决了连接问题(!)。然而,
10.0.2.2
对我来说仍然是一种魔力;我想知道IP从哪里来。

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

该IP地址可以从来宾内部访问,但不能直接从pod内部访问。要从pod中访问它,您需要创建一个公开此IP地址的无头服务。
有关如何创建无头服务,请参见以下答案:

例如,我在主机上的端口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
$kubectl create-f service.yaml
----服务中心----
apiVersion:v1种类:服务元数据:
名称:我的服务规范:
端口:
-协议:TCP
港口:1443
目标港:8000
$kubectl create-f endpoint.yaml
----端点.yaml----
版本:v1
种类:端点
元数据:
姓名:我的服务
子集:
-地址:
-ip:192.168.99.1#vboxnet0的ipv4地址
端口:
-港口:8000
$kubectl获得svc
名称CLUSTER-IP EXTERNAL-IP端口年龄
kubernetes 10.0.0.1 443/TCP 2h
我的服务10.0.0.83 1443/TCP 17m

然后,您可以在pod内使用10.0.0.83:1443访问主机服务。

谢谢您的回答。我会创建一个无头服务,它需要我创建一个端点,还是创建一个ExternalName类型的服务,我认为它不需要我创建一个端点?我只是利用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
address,我在哪里可以读到更多关于这个神奇的东西?除了virtualbox总是将它映射回主机之外,我真的不知道太多