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

Kubernetes v1.21.5下Ingress找不到后端服务返回404/ECONNRefused问题求助

Kubernetes Ingress访问异常排查方案

1. 路径重写规则缺失问题

你当前的Ingress配置启用了正则匹配,但没有配置路径重写规则,请求会将完整路径/service/account/signup直接透传给后端auth服务。如果你的Express服务仅配置了/signup路由,没有添加/service/account前缀,会直接返回404错误。

解决方法:在Ingress的annotations中添加重写规则,同时调整路径类型适配正则逻辑:

kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    # 新增重写注解,将匹配到的后缀路径转发给后端
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - host: triver.dev  
      http:
        paths:
          - path: /service/account/?(.*)
            # 调整路径类型适配正则匹配
            pathType: ImplementationSpecific
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000

修改后重写规则会将/service/account/signup转为/signup后转发给后端服务,匹配Express路由规则。

2. 本地域名解析配置检查

ECONNREFUSED错误大概率是域名解析异常导致:你需要在本地hosts文件中配置triver.dev指向Ingress Controller的对外IP:

  • Docker Desktop部署的K8s默认指向127.0.0.1
  • Minikube部署的K8s指向minikube ip命令返回的IP

hosts文件路径:

  • Windows:C:\Windows\System32\drivers\etc\hosts
  • Linux/Mac:/etc/hosts

添加配置示例:

127.0.0.1 triver.dev

3. Ingress Controller运行状态检查

如果未安装NGINX Ingress Controller,所有Ingress规则都不会生效,会直接返回连接错误。执行以下命令检查Controller运行状态:
kubectl get pods -n ingress-nginx
如果没有正常运行的Pod,需要重新安装对应版本的NGINX Ingress Controller适配K8s v1.21.5。

生效验证

修改配置后重新执行kubectl apply -f [你的Ingress配置文件路径],先使用curl命令本地测试:
curl -X POST http://triver.dev/service/account/signup
接口返回正常响应后再通过Postman调用即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:24:00