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

EKS集群部署Nginx Ingress Controller后访问超时排查求助

问题排查与修复方案

核心问题定位

Ingress资源长期处于Scheduled for sync状态,说明Nginx Ingress Controller未完成Ingress规则的同步,导致Nginx配置中无对应路由规则,最终引发访问超时。以下是针对性排查与修复步骤:


1. 修正Ingress注解冲突

你的Ingress资源混用了两类注解:nginx.ingress.kubernetes.io/(Kubernetes官方维护的Nginx Ingress Controller字段)和nginx.org/(NGINX官方维护的Ingress Controller字段),两类注解不兼容,会直接阻断同步流程。

  • 将所有nginx.org/开头的注解替换为对应官方字段:
    原注解:
    nginx.org/proxy-connect-timeout: 30s
    nginx.org/proxy-read-timeout: 20s
    
    替换为:
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "30s"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "20s"
    
  • 更新Ingress资源:
    kubectl apply -f <你的Ingress配置文件>
    

2. 检查Ingress Controller同步日志

查看Controller Pod的同步相关日志,定位具体报错:

kubectl logs -n <Ingress Controller所在命名空间> <Controller Pod名称> | grep -i "sync\|error"

重点关注是否存在权限不足、资源读取失败等报错,比如RBAC权限缺失会导致Controller无法读取Ingress/Services资源。

3. 验证NLB健康检查配置

虽然安全组无限制,但健康检查失败会导致NLB拒绝转发流量:

  • 确认NLB目标组的健康检查路径是否正确:Nginx Ingress Controller默认健康检查端点为/healthz,而非/,修改Service注解:
    service.beta.kubernetes.io/aws-load-balancer-healthcheck-path: /healthz
    
  • 在AWS控制台查看目标组健康状态,确保所有Ingress Controller Pod的健康检查返回200状态码。

4. 核对Service端口映射

确认NLB的HTTPS端口(443)正确转发到Ingress Controller Pod的HTTPS端口:

kubectl get svc <Ingress Controller Service名称> -n <对应命名空间> -o yaml

检查spec.ports配置,确保name: https的端口中,targetPort指向Controller Pod的443端口(若自定义端口需对应)。

5. 验证同步状态

修复后,检查Ingress资源状态与Nginx配置:

  • 查看Ingress是否完成同步:
    kubectl get ingress <你的Ingress名称> -o yaml
    
    确认status字段包含正确的address,且无Scheduled for sync提示。
  • 查看Nginx配置是否生成对应路由:
    kubectl exec -n <对应命名空间> <Controller Pod名称> -- cat /etc/nginx/nginx.conf | grep -A 10 -B 2 <你的域名>
    
    若能找到对应server块,说明同步成功,此时重新访问即可正常连接Grafana。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:05:22