我在我的mac上安装了minikube,并为我的nodejs app创建了部署和服务。我通过使用以下命令获取服务的URL来测试一切正常:
minikube service 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
我尝试使用端口转发将我的pod端口转发到我的localhost,它只能在托管群集的同一台机器上工作,当我尝试从同一网络上的另一台机器访问时(通过机器的IP地址)集群部署的地方)我仍然找不到页面。
感谢先进的任何帮助。
答案 0 :(得分:3)
您可以使用"port forward a service"
。假设:
166.6.6.6
(包含minikube)192.168.99.100
(使用命令$minikube ip
检查真实IP)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将转发到您的服务URL http://192.168.99.100:31000
答案 1 :(得分:1)
可能有点晚了,但如果有人仍然遇到这个问题-
kubectl get svc -n {namespace_name}
kubectl patch svc {service_name} -n {namespace_name} --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'
service_port=$(minikube service {service_name} -n {namespace_name} --url | cut -d':' -f3)
ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip) -NL \*:${service_port}:0.0.0.0:${service_port}
现在您只需点击链接即可从同一网络上的其他机器访问上述服务-
{your_hostname}:{node_port}
答案 2 :(得分:0)
如果我理解你的问题:
您机器的IP:192.168.1.4
您的minikube IP:192.168.99.100
从计算机上的浏览器访问您的服务:http://192.168.99.100:30080
现在,让我们说你在另一台机器上,比如说192.168.1.5
,你想要访问这项服务。
问题是您需要将机器的端口映射到minikube的30080,因为minikube是在您的机器上运行的VM(无法从您的机器外部访问)。
所以你可以尝试:Virtualbox "port forward" from Guest to Host。
另一种方法是使用kubectl port-forward将端口从localhost直接转发到pod(不幸的是不是k8s svc)。
答案 3 :(得分:0)
您尚未在端口中指定 nodePort。 在端口添加以下配置
节点端口:30000
您可以通过 http://[IP 地址]:30000 访问您的服务