为什么Minikube中Ingress IP与节点IP一致,无法获取隧道URL实现访问
根因说明
Windows环境下使用Docker驱动运行Minikube时,Minikube运行在隔离的Docker虚拟机内,192.168.49.2是虚拟机内部的节点IP,Windows宿主机默认没有路由可以直接访问该地址。Ingress资源的ADDRESS字段由集群内的Ingress Controller负责更新,默认返回Controller所在节点的IP,无法感知到宿主机层面的minikube隧道端口转发地址,因此不会自动返回你拿到的本地隧道URL。
可用解决方案
方案1:直接使用现有隧道快速验证
不需要修改集群配置,直接按以下步骤操作即可访问:
- 保持运行
minikube service ingress-nginx-controller -n ingress-nginx --url的终端不关闭,维持隧道正常运行 - 用管理员权限打开Windows hosts文件,路径为
C:\Windows\System32\drivers\etc\hosts,添加如下映射记录:127.0.0.1 ravi.com - 浏览器访问
http://ravi.com:58628即可访问到你的springboot后端服务,其中端口58628对应隧道返回的80端口映射的本地端口。
方案2:调整Ingress Controller类型实现无端口访问(推荐)
如果需要更接近生产环境的访问方式(无需带端口),可以将Ingress Controller改为LoadBalancer类型:
- 执行命令修改Ingress Controller服务类型:
kubectl patch service ingress-nginx-controller -n ingress-nginx -p '{"spec":{"type":"LoadBalancer"}}' - 新开终端执行
minikube tunnel,该命令会自动为LoadBalancer类型的服务分配外部IP,保持该终端运行 - 等待1分钟后再次执行
kubectl get ingress,此时ADDRESS字段会更新为127.0.0.1 - 同样按方案1的步骤配置hosts映射后,直接访问
http://ravi.com即可访问后端服务,无需额外端口。
内容的提问来源于stack exchange,提问作者user2924500
相关产品推荐
相关产品推荐

