2017-04-20 63 views
1

我在我的Mac筆記本電腦上運行minikube。我正在使用VirtualBox來託管minikube虛擬機,繼official instructions之後。在Mac上,什麼IP代表我的筆記本電腦從minikube集羣?

我想要一個我將部署到羣集中的pod,以便能夠ping我將在我的筆記本上運行的服務器。假設(現在)我沒有定義一個類型爲ExternalName的Kubernetes服務來表示該服務器,我應該在我的pod中運行的程序中使用哪個IP或主機名?

編輯:從我莢,我可以ping 10.0.2.2,並得到答案了。但是,試圖在端口9092上嘗試telnet10.0.2.2(我碰巧有一個H2數據庫正在運行),只是掛起。

最後,minikube ssh,這顯然記錄我到VirtualBox虛擬機,也許?作爲docker運行?導致上述所有相同的行爲,如果這很重要,這表明這是一個關於VirtualBox的根本問題,我想是。

編輯#2:重新啓動VirtualBox解決了連接問題(!)。儘管如此,10.0.2.2仍然對我來說很神奇,我想知道IP從哪裏來。

回答

2

您應該可以使用vboxnet0下列出的ipv4地址。在ifconfig的輸出列表中查找vboxnet0接口。或者,地址10.0.2.2也將映射回來賓的主機。

此IP地址將可以從客人內部訪問,但不能直接從客戶端內訪問。要使其可以從一個容器中訪問,您需要創建一個公開此IP地址的無頭服務。
看到這個答案對於如何創建一個無頭服務: Minikube expose MySQL running on localhost as service

因此,例如,我跑在端口的服務器:我的主人在8000做了以下訪問它的莢:

$ 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來訪問主機服務。

+0

謝謝你的回答。我是否會創建一個無頭的服務,這需要我創建一個端點或一個ExternalName類型的服務,我認爲這不需要我創建一個端點? –

+1

我剛剛得到這個工作訪問我的主機上使用無線服務在minikube w/virtualbox使用yaml文件幾乎相同的鏈接和IP @ vboxnet0的服務器上工作。我認爲你也可以使用ExternalName,但我認爲你需要在你的集羣中添加一個DNS條目來映射到IP。不幸的是,我不熟悉ExternalName。 –

+0

有趣的是,在我沒有其他魔法的情況下,從'kubectl run -i -t busybox --image = busybox --restart = Never'設置的shell提示符中ping'10.0.2.2'就可以得到答案。我在哪裏可以閱讀更多關於這個魔法的知識(對我來說)'10.0.2.2'地址? –

相關問題