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

K8s中通过Ingress访问返回404,请求排查方向

Ingress访问404且请求未转发的排查方向

1. 本地DNS解析与访问链路验证

  • 确认域名解析结果:执行nslookup demo.localdev.me或ping demo.localdev.me,检查解析IP是否指向Ingress Controller的服务IP(集群节点IP、Ingress Controller的LoadBalancer/NodePort对应IP)。如果解析到127.0.0.1但Ingress Controller不在本机,需调整本地hosts或DNS配置。
  • 用curl -v http://demo.localdev.me查看响应头,通过Server字段判断404来源:若为本地服务(如Apache/Nginx),说明请求未到达集群Ingress;若为Ingress Controller标识(如nginx),则Ingress已收到请求但路由配置有误。

2. Ingress Controller状态检查

  • 确认Controller Pod运行状态:执行kubectl get pods -n <ingress-controller-namespace>(比如ingress-nginx),检查Pod是否处于Running状态,无重启或崩溃记录。
  • 查看Controller日志排查异常:kubectl logs <ingress-pod-name> -n <ingress-controller-namespace>,检查是否存在配置加载失败、权限不足或后端服务访问错误的日志。
  • 验证Controller服务端口:执行kubectl get svc -n <ingress-controller-namespace>,若为NodePort类型,尝试访问http://demo.localdev.me:<node-port>,排除端口映射问题。

3. Ingress资源配置校验

  • 查看Ingress绑定状态:kubectl get ingress,检查ADDRESS列是否有有效值,为空则说明Ingress Controller未识别该Ingress(大概率是ingressClassName不匹配,比如Controller用nginx但Ingress资源未指定或指定错误)。
  • 详细检查Ingress规则:kubectl describe ingress example-ingress,确认:
    • Host字段严格匹配demo.localdev.me
    • Path规则正确(比如根路径/的pathType为Prefix或Exact,按需设置)
    • 关联的Service名称、命名空间、端口完全正确
  • 验证Service转发能力:执行kubectl exec -it <任意集群内Pod> -- curl <service-name>.<namespace>.svc.cluster.local,确认后端Service可正常返回内容。

4. 本地端口与网络冲突排查

  • 检查本地80端口占用情况:Linux用netstat -tulpn | grep :80,Windows用netstat -ano | findstr ":80",若有本地服务(如Apache、Nginx)占用80,请求会被本地服务处理返回404,需停止本地服务或调整Ingress Controller的端口映射。
  • 验证集群内部网络连通性:执行kubectl exec -it <ingress-pod-name> -n <ingress-controller-namespace> -- curl <service-name>.<namespace>.svc.cluster.local,若无法访问,排查集群网络插件(如Calico、Flannel)的运行状态。

5. 缓存与客户端问题

  • 清除浏览器缓存或使用隐私模式访问,避免旧DNS缓存或页面缓存导致的异常。
  • 换用curl、Postman等不同客户端测试,排除浏览器自身问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:22:41