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

AGIC AppGW遇502错误及探针异常,API路由失效求助

问题诊断与解决方案

核心问题分析

  1. 健康检查失败:AGIC默认会为每个后端服务创建针对根路径(/)的健康检查,但你的ASP.NET Core API未在根路径提供返回200的端点,导致健康检查返回404,Application Gateway标记后端为不健康,拒绝转发流量。
  2. 路径转发不匹配:当Ingress配置path: /api1且pathType: Prefix时,AGIC会将完整路径(包含/api1)转发到后端API服务。如果你的API端点是/xxx而非/api1/xxx,就会触发404错误。

修复步骤

1. 调整Ingress配置(推荐方案)

通过AGIC专属注解自定义健康检查路径,并配置路径重写,适配API的路由结构:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp
  namespace: default
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  tls:
  - hosts:
    - app.example.com
  rules:
  - host: app.example.com
    http:
      paths:
        - path: /
          pathType: Exact
          backend:
            service:
              name: angular
              port:
                number: 80
        - path: /api1/*
          pathType: Prefix
          backend:
            service:
              name: api1
              port:
                number: 80
          annotations:
            # 配置API1的健康检查路径(替换为你的API健康端点)
            appgw.ingress.kubernetes.io/health-probe-path: "/health"
            # 将请求路径重写为去掉/api1的部分,适配API路由
            appgw.ingress.kubernetes.io/backend-path-prefix: "/"
        - path: /api2/*
          pathType: Prefix
          backend:
            service:
              name: api2
              port:
                number: 80
          annotations:
            appgw.ingress.kubernetes.io/health-probe-path: "/health"
            appgw.ingress.kubernetes.io/backend-path-prefix: "/"

2. 验证配置同步

执行命令查看AGIC日志,确认配置已同步到Application Gateway:

kubectl logs -n kube-system ingress-appgw-deployment-6d4f68fc9f-xtlmk | grep -i "successfully applied"

3. 备选方案:调整API路由

如果不想修改Ingress配置,可以在ASP.NET Core API的Program.cs中添加路由前缀:

// 针对API1添加路由前缀
app.MapControllers().RequireAuthorization().WithRoutePrefix("/api1");

这样API端点会以/api1开头,直接匹配AGIC转发的完整路径,同时确保/api1路径返回200状态码(可添加一个空的根控制器)。


优化配置建议

  • 拆分Ingress资源:将前端和API的Ingress分开配置,便于独立管理注解、TLS规则和路由策略。
  • 增强AGIC日志:修改AGIC的ConfigMap开启详细日志,便于排查路由问题:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ingress-appgw-cm
      namespace: kube-system
    data:
      verbosity: "3"
    
  • 自定义健康检查参数:根据API响应特性调整健康检查的间隔、超时阈值:
    appgw.ingress.kubernetes.io/health-probe-interval: "30"
    appgw.ingress.kubernetes.io/health-probe-timeout: "10"
    appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: "3"
    
  • 资源调优:你的AGIC Pod配置了cpu:700m和memory:600Mi,如果集群规模较大,可适当提升资源请求(如cpu:200m),避免AGIC成为流量瓶颈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:44:50