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

Azure Kubernetes集群部署服务后Ingress访问404问题排查

问题排查与解决步骤

1. 确认Nginx Ingress Controller部署状态

先检查Ingress Controller的Pod运行状态及Service的External IP分配情况:

kubectl get pods -n ingress-nginx
kubectl get service -n ingress-nginx
  • 若Pod未正常运行,需确认Azure集群上的Nginx Ingress Controller部署流程正确(比如通过helm或官方YAML完成安装)
  • 确认Ingress Service的External IP已完成分配,状态不为<pending>

2. 修正Ingress路径重写规则

你的Ingress配置中,路径/v1(/|$)(.*)配合rewrite-target: /$2会将/v1重写为后端服务的根路径/,若后端应用未配置根路径路由,就会返回404。可根据实际需求调整:

  • 若后端应用接口基于/v1前缀,修改重写规则:
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /v1/$2
    nginx.ingress.kubernetes.io/proxy-body-size: 100m
  • 若无需路径重写,直接移除rewrite-target注解,调整路径配置:
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: 100m
spec:
  rules:
  - http:
      paths:
      - path: /v1
        pathType: Prefix
        backend:
          service:
            name: service-st
            port:
              number: 3046

3. 验证后端服务可用性

在集群内部测试Service与后端Pod的连通性:

# 启动临时测试Pod
kubectl run -it --rm --image=curlimages/curl test-curl
# 在测试Pod内访问Service根路径
curl service-st:3046
# 或访问预期接口路径,比如
curl service-st:3046/v1
  • 若访问Service返回404,说明后端容器内的应用未配置对应路由,需检查应用监听端口(确认是3046)及接口路径配置
  • 若Service访问正常,问题则出在Ingress转发环节

4. 检查Ingress资源状态与事件

查看Ingress资源的详细信息,确认规则是否生效:

kubectl describe ingress k8s-ingress
  • 检查Events字段,排查是否存在Service找不到、端口不匹配等报错
  • 确认Ingress Class与部署的Nginx Controller的class名称一致(默认是nginx,若部署时修改过需对应调整)

5. 查看Nginx Ingress Controller日志

通过日志定位转发过程中的具体错误:

kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx

日志会记录请求的转发路径、后端服务的响应状态,帮助区分是Ingress转发问题还是后端服务自身问题


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:42:34