首页 > 解决方案 > 无法通过 minikube 隧道访问应用程序

问题描述

我目前正在使用 minikube,并且minikube tunnel由于服务类型为LoadBalancer.

当我执行时,我能够获得外部 IP minikube tunnel,但是,当我尝试在浏览器上检查它时,它不起作用。我也尝试过 Postman 和 curl,它们都不起作用。

除此之外,如果我进入 pod,我可以使用 curl 并且它确实有效。此外,我执行kubectl port-forward并能够通过localhost访问我的应用程序。

有没有人知道为什么我无法访问我的应用程序,即使一切似乎都运行正常?

标签: kuberneteskubectlminikube

解决方案


您的服务可能绑定到本地主机。Minikube 在绑定到外部 IP $(minikube ip) 的 VM 或 docker(取决于您使用的驱动程序)中启动集群。

当您运行 minikube 隧道时,您将从 minikube 集群外部 IP 隧道传输到负载均衡器的内部 IP,Kubernete 中的 LB 服务外部 IP 从“待定”变为实际的内部 IP,这样的事情应该可以工作:

curl -H 'Host: localhost' -v $(minikube ip)

但是,它不在浏览器中,因为在上面的命令中,您将请求发送到 minikube 的 IP,而不是 localhost。我为此做的是一个像这样的ssh隧道:

ssh -i $(minikube ssh-key) docker@$(minikube ip) -L 8008:localhost:80

这会将 minikube 集群中端口 80 中的 LB 侦听器映射到 localhost 中的 8008。服务的外部 IP 仍然挂起,但它可以工作,因为 Kube 控制器仍然可以找到它。如果要映射端口 80,则需要添加 sudo。


推荐阅读