我当前正在使用minikube,并且由于服务类型为minikube tunnel
,因此我试图通过利用LoadBalancer
访问我的应用程序。
当我执行minikube tunnel
时,我可以获得一个外部IP,但是,当我尝试在浏览器中检查它时,它不起作用。我也尝试过邮递员(Postman)和curl,它们都不起作用。
要补充一点,如果我将外壳装进豆荚中,则可以使用curl,它确实可以工作。此外,我执行了kubectl port-forward
,并且能够通过 localhost 访问我的应用程序。
对于所有事情似乎都正常运行的原因,为什么有人无法访问我的应用程序有任何想法吗?
答案 0 :(得分:0)
您的服务可能已绑定到本地主机。 Minikube在绑定到外部IP $(minikube ip)的VM或docker(取决于您使用的驱动程序)中启动群集。
当您运行minikube隧道时,您正在从minikube集群外部IP到负载均衡器的内部IP进行隧道传输,Kubernete中的LB服务外部IP从“待处理”变为实际的内部IP,类似这样应该工作:
curl -H 'Host: localhost' -v $(minikube ip)
但是,它不在浏览器中,因为在上面的命令中,您是将请求发送到minikube的IP,而不是本地主机。我要做的就是这样的ssh隧道:
ssh -i $(minikube ssh-key) docker@$(minikube ip) -L 8008:localhost:80
这会将minikube集群中端口80上的LB侦听器映射到localhost中的8008。服务的外部IP仍处于挂起状态,但由于Kube控制器仍可以找到它,因此它可以工作。如果要映射端口80,则需要添加sudo。