不修改etc/hosts如何通过浏览器访问本地Minikube集群?
问题原因
- 你用Docker驱动运行Minikube时,返回的
192.168.49.2是Minikube容器内部的节点IP,Windows宿主机默认没有到这个网段的路由,直接访问这个IP、对应端口必然没有响应,和hosts文件改不改没关系。 - Nginx Ingress默认基于HTTP请求的
Host头做虚拟主机转发,你配置的规则只匹配hello-world.info这个域名,就算网络打通了,直接访问IP不带对应Host头,Ingress找不到匹配的转发规则,也不会把请求转到你的web服务。 - 你创建的NodePort类型服务,32718端口是绑定在Minikube内部节点网卡上的,Docker驱动默认不会把这个端口映射到宿主机,直接访问当然不通。
解决步骤(无需修改hosts文件)
- 打通宿主机到Minikube内部网络
打开管理员权限的终端,执行minikube tunnel,保持这个终端窗口运行不要关闭。这条命令会自动在宿主机添加到Minikube集群网段的路由,执行完成后你在Windows上就能正常连通192.168.49.2这个IP。 - 验证服务连通性
不用修改hosts的前提下,发请求时手动携带对应Host头即可,curl测试命令如下:curl http://192.168.49.2 -H "Host: hello-world.info" - 浏览器访问方案
不想改hosts的话,可以给浏览器装请求头修改插件,给发往192.168.49.2的请求添加请求头Host: hello-world.info,就能正常打开部署的应用。
如果只是想快速验证web服务本身是否正常,不用走Ingress的话,直接执行minikube service web,Minikube会自动做端口映射并打开默认浏览器访问服务,不需要额外配置。
注意事项
- 先执行
minikube addons list确认ingress-nginx插件处于启用状态,Docker驱动下Ingress的80端口必须配合minikube tunnel才能在宿主机访问。 - 直接访问IP返回404或无响应是正常现象,Nginx Ingress默认没有配置全局默认后端,只有匹配到对应Host规则的请求才会被转发到后端服务。
内容的提问来源于stack exchange,提问作者UberStreuneR
相关产品推荐
相关产品推荐

