AGIC AppGW遇502错误及探针异常,API路由失效求助
问题诊断与解决方案
核心问题分析
- 健康检查失败:AGIC默认会为每个后端服务创建针对根路径(
/)的健康检查,但你的ASP.NET Core API未在根路径提供返回200的端点,导致健康检查返回404,Application Gateway标记后端为不健康,拒绝转发流量。 - 路径转发不匹配:当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
相关产品推荐
相关产品推荐

