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

Kubernetes Ingress配置异常:访问test-service报Bad Gateway

排查Ingress访问test-service出现Bad Gateway的问题

1. 先确认后端服务与Pod的基础连通性

  • 检查test-service是否关联到正常运行的Pod:
    kubectl describe service test-service
    
    查看输出里的Endpoints字段,确认是否有Pod的IP列表。如果为空,说明标签匹配存在问题(从现有配置看标签规则是匹配的,但仍需实际验证)。
  • 检查test-app Pod的运行状态:
    kubectl get pods -l app=test-app
    
    确保所有Pod状态为Running,且就绪探针(如果配置了)处于正常状态。如果Pod处于CrashLoopBackOff等异常状态,优先修复Pod启动问题。
  • 在集群内部直接调用test-service验证服务可用性:
    kubectl run -it --rm --image=busybox:1.36 curl-tester -- curl test-service:80
    
    如果这里返回错误,说明后端服务本身存在问题(比如端口监听错误、应用未正常初始化),需先解决服务自身的问题。

2. 检查Ingress路径转发配置

你的Ingress中/test/路径使用了pathType: Prefix,Nginx Ingress默认会把完整的请求路径(包括/test/)转发给test-service。如果test-app的服务是监听根路径/,那么后端收到的请求是/test/,而应用没有对应路由,会返回404,进而导致Ingress返回Bad Gateway。

解决方法:添加路径重写注解,修改Ingress配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: java-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  ingressClassName: nginx
  rules:
    - host: my-app
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: java-app-service
                port:
                  number: 80
          - path: /test(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: test-service
                port:
                  number: 80

修改后应用配置:

kubectl apply -f your-ingress-file.yaml

3. 查看Ingress Controller日志定位具体错误

查看Nginx Ingress Controller的日志,获取更详细的错误细节:

kubectl logs -n ingress-nginx deployment/ingress-nginx-controller

如果日志中出现connect() failed (111: Connection refused),说明Ingress无法连接到test-service的后端Pod;如果出现upstream sent invalid response,说明后端服务返回了异常响应。

内容的提问来源于stack exchange,提问作者Antonio-93

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:38:34