2016-12-03 112 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作为反向代理安装会更好吗? (这是我目前的工作解决方案..) –

相关问题