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

私有AKS集群搭配AGIC访问出现404错误求助

排查思路与解决方案

1. 检查访问时的Host头匹配

你的Ingress规则明确指定了host: backendpocwebapp.<location>.cloudapp.azure.com,Application Gateway(AG)只会将匹配该Host头的请求转发到对应后端服务。如果直接用AG的公网IP访问,请求未携带指定Host头,AG找不到匹配的路由规则,就会返回404。

验证与解决:

  • 用curl测试时手动添加Host头:
    curl -H "Host: backendpocwebapp.<location>.cloudapp.azure.com" http://<AG公网IP>
    
  • 若希望通过IP直接访问,修改Ingress配置,去掉host字段或新增无Host头的默认规则:
    spec:
      rules:
      # 保留原带host的规则,新增无host的默认路由
      - http:
          paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: nextjspocapp 
                port: 
                  number: 80
    

2. 确认AGIC与AG的配置同步状态

即便Ingress Controller显示后端健康,仍需确认Ingress路由规则是否同步到AG:

  • 查看AGIC Pod日志,检查同步状态:
    kubectl logs -n kube-system <agic-pod-name>
    
    搜索Applied Application Gateway config或Error while applying config关键词,确认同步是否成功。
  • 登录Azure门户,进入AG的规则页面,检查是否存在对应Ingress的路由规则,且规则中的路径、后端池关联正确。

3. 检查AG的后端与健康探测配置

  • 查看AG的后端池,确认后端成员为AKS Pod/ClusterIP的IP,且健康探测状态正常。
  • 若你的应用健康检查路径不是默认的/,需在Ingress中添加annotation指定探测路径:
    metadata:
      annotations:
        appgw.ingress.kubernetes.io/health-probe-path: "/healthz"
    

4. 补充验证网络连通性

你已确认AKS子网路由表关联到Ingress子网,还需检查:

  • AG所在子网的路由表是否包含指向AKS节点子网的用户定义路由(UDR),确保AG能访问AKS内部的Pod/Service。
  • 网络安全组(NSG)规则:AG子网NSG需允许向AKS子网的80(Service端口)或3000(Pod端口)发起TCP请求;AKS节点子网NSG需允许来自AG子网的入站流量。

5. 验证应用自身路径响应

确认Next.js应用在根路径/返回正常响应:

  • 在AKS集群内启动测试Pod,直接访问ClusterIP服务:
    kubectl run -it --rm test-pod --image=busybox -- wget -O- http://nextjspocapp.default.svc.cluster.local/
    
    检查是否返回200响应及正确内容。

配置优化建议

你的Deployment selector为tier: poc,而Service selector为app: nextjspocapp,当前Pod同时带有两个标签所以能正常关联,但建议保持selector逻辑一致,避免后续修改标签时出现服务断联问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:05:23