我目前正在使用minikube,我试图通过使用minikube tunnel
访问我的应用程序,因为服务类型是LoadBalancer
。
当我执行minikube tunnel
时,我能够获得外部IP,但是,当我尝试在浏览器上检查它时,它不起作用。我也试过Postman和Curl,它们都不起作用。
为了补充这一点,如果我shell到pod我可以使用curl,它确实工作。此外,我执行了kubectl port-forward
,并且我能够通过localhost访问我的应用程序。
有没有人知道为什么我不能访问我的应用程序,即使一切似乎都运行正常?
4条答案
按热度按时间1sbrub3j1#
您的服务可能已绑定到localhost。Minikube在绑定到外部IP $(minikube ip)的VM或docker(取决于您使用的驱动程序)中启动集群。
当您运行minikube隧道时,您正在从minikube集群外部IP隧道到负载均衡器的内部IP,Kubernete中的LB服务外部IP从“挂起”到实际的内部IP,并且应该这样工作:
字符串
但是,它不会在浏览器中,因为在上面的命令中,您正在将请求发送到minikube的IP,而不是localhost。我所做的是这样一个ssh隧道:
型
这将minikube集群中端口80中的LB侦听器Map到localhost中的8008。服务的外部IP仍处于挂起状态,但它可以工作,因为Kube控制器仍然可以找到它。如果你想Map端口80,那么你需要添加sudo。
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示例。
mo49yndu3#
在我的例子中,
minikube service <serviceName>
解决了这个问题。更多细节请查看minikube文档中的here。
8zzbczxx4#
我遇到了同样的问题,最后,我运行
kubectl get services
来列出名称空间中的所有服务,并查看我的应用程序所在的端口(例如,然后我运行kubectl port-forward service/<service_name> 7080:80
将端口80转发到7080(这意味着应用程序将在localhost:7080
上可用。之后,我运行minikube service <service_name>
来启动集群,并在localhost:7080
上查看应用程序。这不是我的领域,但它对我很有效,我希望它也能帮助别人。