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

Windows环境下Kubernetes Ingress返回404问题排查求助

排查Kubernetes Ingress 404错误的实操步骤

从核心环节逐一排查定位问题:

1. 修正Ingress重写规则配置

你的Ingress配置中,rewrite-target与路径正则的搭配存在问题。在NGINX Ingress Controller的v1版本里,当路径使用正则捕获组时,需要在rewrite-target中引用捕获的内容:

调整后的Ingress配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: minimal-ingress
 annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
 ingressClassName: nginx
 rules:
 - host: ticketing.dev
   http:
     paths:
      - path: /api/users/(.*)
        pathType: Prefix
        backend:
          service:
           name: auth-srv
           port:
             number: 3000

如果你的服务本身就是以/api/users作为根路径处理请求,也可以直接移除rewrite-target注解,简化为:

paths:
- path: /api/users
  pathType: Prefix
  backend:
    service:
      name: auth-srv
      port:
        number: 3000

2. 配置本地DNS解析

Windows系统下需将自定义域名映射到Kubernetes集群入口:

  • 以管理员权限打开C:\Windows\System32\drivers\etc\hosts文件
  • 添加一行:127.0.0.1 ticketing.dev(Docker Desktop的K8s Ingress默认绑定localhost)
  • 执行命令刷新DNS缓存:ipconfig /flushdns

3. 确认Ingress Controller运行状态

检查NGINX Ingress Controller Pod是否正常启动:

kubectl get pods -n ingress-nginx

若Pod未处于Running状态,优先解决Controller的启动问题(如镜像拉取失败、资源不足等)。

4. 验证服务与Pod的连通性

跳过Ingress直接测试服务本身是否可用:

kubectl port-forward service/auth-srv 3000:3000

在本地访问http://localhost:3000/api/users/[你的具体接口路径],如果仍返回404,说明问题出在服务自身的接口配置,与Kubernetes无关;若能正常返回,再回到Ingress配置排查。

5. 检查Ingress资源绑定状态

确认Ingress已被Controller正确识别:

kubectl get ingress

查看ADDRESS字段是否有值(通常为localhost或集群IP),若为空则检查ingressClassName是否正确(执行kubectl get ingressclass确认集群中存在名为nginx的IngressClass)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:22:15