2016-12-03 125 views
0

我在我的mac上安裝了minikube,併爲我的nodejs應用程序創建了部署和服務。我測試了一切正在通過使用以下命令獲取服務的URL:從同一網絡中的另一臺機器訪問NodePort服務

minikube服務my-nodejs-app --url然後我在瀏覽器中運行此URL並獲得結果。問題是當我試圖從同一網絡內的另一臺機器訪問相同的URL時,它沒有工作。

我的服務.yml文件是:

apiVersion: v1 
kind: Service 
metadata: 
    name: my-nodejs-app 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
    targetPort: 1337 
    protocol: TCP 
    name: app-server 
    selector: 
    app: my-nodejs-app 

我試圖用端口轉發到我的莢端口轉發到我的本地主機,它只能誰主持羣,當我試圖訪問同一臺機器上從同一網絡上的另一臺計算機(通過羣集部署的計算機的IP地址),我仍然找不到頁面。

非常感謝您的幫助。

回答

0

聽起來像從另一臺機器到達它比較暴露在網絡上的ssevice。 在你需要尋找到規格/型號這種情況下:負載平衡器(http://kubernetes.io/docs/user-guide/load-balancer/) 這就是說,與minikube我會堅持到一臺機器和發展只測試

+0

謝謝,但我正在開發一個移動應用程序,當我嘗試在真實的移動設備上測試應用程序時,這是不可能的,因爲我無法從我的移動設備到達該服務。 順便說一句 - 我找到了一種方法,通過安裝一個反向代理(NGINX),將請求轉發到我的服務,但我想知道是否有更好的方法.. –

+0

您是否研究過使用loadbalancer類型設置服務?因爲這是更好的方式(kubernetes的方式),這就是我的意思 – Ben

+0

在minikube中,你不能使用LoadBalancer服務的類型必須是NodePort –

0

如果我理解正確的話您的問題:

你的機器的IP:192.168.1.4 您minikube IP:192.168.99.100 從您的計算機上的瀏覽器訪問您的服務:http://192.168.99.100:30080

現在,讓我們說你是另一臺機器上,說192.168.1.5,你要訪問這個S ervice。

問題是您需要將您的機器的端口映射到minikube的30080,因爲minikube是您的機器上運行的虛擬機(無法從機器外部訪問)。

所以你可以試試:Virtualbox "port forward" from Guest to Host

另一種方法是通過使用kubectl port-forward直接將端口從本地主機轉發到某個容器(不幸的是不是k8s svc)。

+0

hi @iamnat,我試過kubectl port-forward(這似乎是最好的解決方案),但它不工作......我可以嘗試VirtualBox上的「端口轉發」方法但是您認爲將NGINX作爲反向代理安裝會更好嗎? (這是我目前的工作解決方案..) –

相關問題