You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在minikube中直接访问跨命名空间的ingress-nginx服务

问题原因

你遇到的域名解析报错是因为 *.svc.cluster.local 格式的域名是K8s集群内部DNS(CoreDNS)提供解析能力的,仅能在集群内部的Pod网络中访问,你在本地宿主机直接执行curl请求,本地DNS服务无法识别该内部域名,因此抛出无法解析主机的报错。

本地测试Ingress的解决方案

你当前的诉求是本地测试ingress-nginx的规则是否生效,可按以下步骤操作:

步骤1:获取minikube节点IP

执行命令获取minikube的节点地址:

minikube ip

假设输出为 192.168.49.2。

步骤2:临时测试Ingress规则

你的ingress-nginx-controller是NodePort类型,80端口映射到宿主机的30306端口,可直接携带Host头请求测试:

curl -H "Host: ticketing.dev" http://192.168.49.2:30306

如果需要测试HTTPS请求,使用31814端口,加-k参数跳过证书校验:

curl -k -H "Host: ticketing.dev" https://192.168.49.2:31814

步骤3:配置本地hosts实现直接访问

如果需要直接在浏览器输入ticketing.dev访问服务,修改本地hosts文件:

  • Linux/macOS:修改 /etc/hosts 文件
  • Windows:修改 C:\Windows\System32\drivers\etc\hosts 文件
    在文件末尾添加一行:
192.168.49.2 ticketing.dev

保存后即可直接通过 http://ticketing.dev:30306 访问服务。

可选:无需端口号访问(使用minikube tunnel)

如果不想携带端口号访问,可开启minikube tunnel为Loadbalancer类型服务分配外部IP:

  1. 新开终端执行命令:
minikube tunnel
  1. 查看ingress-nginx-controller的EXTERNAL-IP:
kubectl get svc -n ingress-nginx
  1. 将hosts文件中ticketing.dev对应的IP修改为上述EXTERNAL-IP,之后即可直接通过 http://ticketing.dev 访问服务。
集群内部访问Ingress的方案

如果你是需要在集群内部的其他Pod中访问Ingress,直接在Pod内执行请求即可,可使用临时测试Pod验证:

kubectl run -it --rm --image=curlimages/curl curl-test -- curl -H "Host: ticketing.dev" http://ingress-nginx-controller.ingress-nginx.svc.cluster.local
排查校验点
  • 执行 kubectl get ingress 确认ingress资源状态正常,ADDRESS列有正常输出
  • 执行 kubectl get svc 确认default命名空间下的auth-srv、client-srv服务正常运行,端口配置为3000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:48:04