从同一网络中的另一台机器访问 NodePort 服务

Ran*_*sid 1 kubernetes kubectl minikube

我在我的 Mac 上安装了 minikube,并为我的 Nodejs 应用程序创建了部署和服务。我通过使用以下命令获取服务的 URL 来测试一切正常:

minikube service my-nodejs-app --url
Run Code Online (Sandbox Code Playgroud)

然后我在浏览器中运行这个 URL 并得到结果。问题是当我尝试从同一网络内的另一台计算机访问相同的 URL 时,它不起作用。

我的service.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  
Run Code Online (Sandbox Code Playgroud)

我尝试使用端口转发将 pod 端口转发到本地主机,它仅在托管集群的同一台机器上工作,并且当我尝试从同一网络上的另一台机器访问时(通过集群所在机器的 IP 地址)已部署)我仍然找不到页面。

Jin*_*uan 5

您可以使用"port forward a service"。假设:

  • 你的本地机器IP:(166.6.6.6持有minikube)
  • 你的minikube IP:(192.168.99.100使用命令查看真实IP $minikube ip
  • 您的服务“my-nodejs-app”的nodePort:(31000使用命令检查真实的nodePort $kubectl get service:)

为了从远程访问您的服务,您可以在本地计算机中通过以下命令将端口(例如 31000,推荐与 nodePort 相同的端口)转发到您的服务:

ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip) -L \*:31000:0.0.0.0:31000

然后您可以通过 URL: 访问您的服务http://166.6.6.6:31000,该 URL 将会转发到您的服务 URLhttp://192.168.99.100:31000

谢谢: https: //github.com/kubernetes/minikube/issues/877