You need to enable JavaScript to run this app. 如何在不依赖第三方服务的前提下暴露Minikube的Kubernetes Ingress给局域网访问
优惠活动
大模型
产品
解决方案
定价
更多

如何在不依赖第三方服务的前提下暴露Minikube的Kubernetes Ingress给局域网访问

跨主机A访问Minikube中Ingress服务的实现方案

核心访问逻辑与异常原因

  • Minikube默认启动独立的192.168.49.0/24虚拟网段,该网段仅运行Minikube的主机B可直连,同局域网内的主机A无对应路由,无法直接连通网段内IP
  • Ingress控制器的路由规则默认匹配请求头中的Host字段,无对应Host标识的请求(直接访问Minikube IP的/hello路径)会命中控制器内置的默认404规则。直接访问192.168.49.2/hello时返回Nginx 404,正是这一规则导致的
  • 主机B上可正常访问hello-node.com/hello,是因为本地hosts将域名解析到Minikube IP,请求携带了匹配规则的Host头,可正常命中Ingress路由

方案1:复用现有Ingress配置实现跨主机域名访问

该方案无需修改集群内部服务配置,仅通过主机B的流量转发即可打通访问链路:

  1. 在主机B上配置端口转发,将主机B局域网IP的80端口流量透传到Minikube内部的Ingress控制器HTTP服务端口:
    # 查询Minikube内Ingress控制器的HTTP服务NodePort端口
    INGRESS_HTTP_PORT=$(kubectl get svc -n kube-system ingress-nginx-controller -o go-template='{{range .spec.ports}}{{if eq .port 80}}{{.nodePort}}{{end}}{{end}}')
    # 配置iptables流量转发规则,绑定主机B所有局域网网卡
    sudo iptables -t nat -A PREROUTING -d 192.168.0.110 -p tcp --dport 80 -j DNAT --to-destination 192.168.49.2:$INGRESS_HTTP_PORT
    sudo iptables -t nat -A POSTROUTING -j MASQUERADE
    # 开启主机B的内核IP转发能力
    sudo sysctl -w net.ipv4.ip_forward=1
    
  2. 配置主机A的本地hosts解析,将hello-node.com域名映射到主机B的局域网IP:
    编辑主机A的hosts文件(Linux路径为/etc/hosts,Windows路径为C:\Windows\System32\drivers\etc\hosts),添加条目:
    192.168.0.110   hello-node.com
    
  3. 主机A直接访问http://hello-node.com/hello即可获取正常服务响应,全程无第三方负载均衡组件依赖。

方案2:实现无域名的IP直连访问

若需要在主机A上直接通过Minikube虚拟IP访问/hello路径,需完成两项配置调整:

  1. 打通主机A到Minikube虚拟网段的连通性:在主机A上添加静态路由,将前往192.168.49.0/24网段的请求下一跳指向主机B的局域网IP(Linux环境操作命令):
    sudo ip route add 192.168.49.0/24 via 192.168.0.110 dev eth0
    
  2. 调整现有Ingress规则,去掉强制绑定的hello-node.com域名配置,将规则设置为全局路径匹配,使所有携带/hello路径的请求(无匹配Host头的请求)均可被路由到对应hello-node服务。调整完成后,之前访问192.168.49.2/hello返回404的问题将直接解决。

NodePort暴露方案的调整说明

针对已有的NodePort暴露方案,仅需调整ssh端口转发的绑定地址,即可支持跨主机A访问,无需改动集群内部网络:

# 原ssh转发命令调整为绑定主机B的局域网网卡接口
ssh -i ~/.minikube/machines/minikube/id_rsa docker@192.168.49.2 -NL 192.168.0.110:8090:0.0.0.0:$SERVICE_NODE_PORT

调整完成后,主机A直接访问http://192.168.0.110:8090即可获取对应hello-node服务的响应,无需依赖Ingress规则。

内容的提问来源于stack exchange,提问作者poijqwef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 22:45:07