kubernetes 无法通过minikube隧道访问应用程序

slwdgvem  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(4)|浏览(223)

我目前正在使用minikube,我试图通过使用minikube tunnel访问我的应用程序,因为服务类型是LoadBalancer
当我执行minikube tunnel时,我能够获得外部IP,但是,当我尝试在浏览器上检查它时,它不起作用。我也试过Postman和Curl,它们都不起作用。
为了补充这一点,如果我shell到pod我可以使用curl,它确实工作。此外,我执行了kubectl port-forward,并且我能够通过localhost访问我的应用程序。
有没有人知道为什么我不能访问我的应用程序,即使一切似乎都运行正常?

1sbrub3j

1sbrub3j1#

您的服务可能已绑定到localhost。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侦听器Map到localhost中的8008。服务的外部IP仍处于挂起状态,但它可以工作,因为Kube控制器仍然可以找到它。如果你想Map端口80,那么你需要添加sudo。

1cklez4t

1cklez4t2#

如果你的系统上的ssh版本(你的路径中的那个)小于8.0,'minikube tunnel'将在某些端口转发时无法示例化ssh隧道。(例如特权端口)
以管理员身份打开命令提示符,然后键入“where.exe ssh”。在windows资源管理器中导航到该位置,然后右键单击'ssh.exe'。选择属性->详细信息以查看版本。
如果这个版本低于8.0,你必须升级到至少8.0版本,以防止这种silent failure of ssh by 'minikube tunnel'。
升级后,ssh,确保新版本是将通过再次使用'where.exe'命令执行的版本。如果系统上有两个路径,则在path环境变量中对路径重新排序。重新启动您的shell(或者更好的方法)重新启动系统,以便所有进程/环境都能接收路径更改。
那就再试试迷你库贝隧道。当它工作时,您应该在任务管理器中看到minikube创建的每个隧道的ssh示例。

mo49yndu

mo49yndu3#

在我的例子中,minikube service <serviceName>解决了这个问题。
更多细节请查看minikube文档中的here

8zzbczxx

8zzbczxx4#

我遇到了同样的问题,最后,我运行kubectl get services来列出名称空间中的所有服务,并查看我的应用程序所在的端口(例如,然后我运行kubectl port-forward service/<service_name> 7080:80将端口80转发到7080(这意味着应用程序将在localhost:7080上可用。之后,我运行minikube service <service_name>来启动集群,并在localhost:7080上查看应用程序。这不是我的领域,但它对我很有效,我希望它也能帮助别人。

相关问题