我在Mac笔记本电脑上运行minikube。我正在使用VirtualBox来托管minikube虚拟机,遵循official instructions。
我想要一个我要部署到集群中的pod,以便能够ping我将在笔记本电脑上运行的服务器。假设(现在)我没有定义类型为ExternalName的Kubernetes服务来表示该服务器,我应该在我的pod中运行的程序中使用什么IP或主机名?
编辑:从我的广告连播中我可ping 10.0.2.2
获得答案。但是,在端口telnet
上尝试10.0.2.2
到9092
,我碰巧运行了H2数据库,只是挂起。
最后,minikube ssh
,显然会将我登录到VirtualBox VM,也许?以docker
身份运行?导致上述所有相同的行为,如果这很重要,这表明这基本上是一个关于VirtualBox的问题。
编辑#2 :重新启动VirtualBox解决了连接问题(!)。尽管如此,10.0.2.2
对我来说仍然是神奇的;我想知道IP的来源。
答案 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访问主机服务。