通过Kubernetes Ingress调用超10分钟API无响应直连Pod正常如何排查
结论
该问题与Kestrel在反向代理后的运行配置无关,根因为Nginx Ingress Controller的注解配置混用导致超时参数未生效。
问题根因
- 你直接访问Pod IP时请求可正常返回,已经证明Kestrel侧的请求处理、长连接配置无异常,默认Kestrel也未设置10分钟的请求时长限制,可直接排除Kestrel相关问题。
- 你当前的Ingress配置混用了两类不同Nginx Ingress控制器的注解规则:
- 前缀为
nginx.ingress.kubernetes.io/的注解属于Kubernetes社区版Nginx Ingress Controller(AKS默认安装的版本)的配置规则 - 你添加的
nginx.org/hsts: "false"属于NGINX官方出品的Nginx Ingress Controller的配置规则
- 前缀为
- 两类注解互不兼容,会导致你配置的7200秒超时参数未被正确加载,控制器默认使用600秒(10分钟)的
proxy-read-timeout阈值,超过该时长的请求会被直接切断,表现为请求始终处于未结束状态。
修复方案
- 若你使用的是AKS默认自带的社区版Nginx Ingress Controller:
- 删除Ingress注解中的
nginx.org/hsts: "false"配置项 - 替换为社区版对应规则
nginx.ingress.kubernetes.io/hsts: "false" - 重新应用Ingress配置后,验证超时请求是否正常返回
- 删除Ingress注解中的
- 若你使用的是NGINX官方版Nginx Ingress Controller:
将所有前缀为nginx.ingress.kubernetes.io/的注解替换为NGINX官方对应前缀的配置规则,重新应用后即可生效。
内容的提问来源于stack exchange,提问作者Nitzan Malichi
相关产品推荐
相关产品推荐

