k8s ingress nginx 504 gateway timeout 问题
问题背景
一个 python 服务接口由于需要处理大量数据,耗时比较长,每次请求都会报错 nginx 504 gateway timeout,应用都是通过 k8s 容器部署的,请求从客户端到达应用还需要经过一层代理分发层应用 web-proxy。
分析排查
简单分析如下:🧐
- 应用接口是用的 gunicron 服务器,显然地与 nginx 报错信息无关,所以问题不在这里
- 代理分发层应用 web-proxy 部署时需要用到 ingress,大胆怀疑报错来自这里
可以通过查看 nginx-ingress-controller
pod 日志,搜索报错的 api url,来验证猜想:
如果找不到 nginx-ingress-controller
pod,可能是因为其在另外的 namesapce 下,可以使用命令 kubectl get pods --all-namespaces | grep ingress
查询所有命名空间的 ingress pod。
解决方案
验证猜想正确后,就需要动手修改 web-proxy 的ingress 配置了。根据 https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-timeouts 文档,修改后的 Ingress 配置如下:
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-proxy-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
# 按自己实际所需配置
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
参考
文完撒花🎉!感谢观看👏!
热门相关:骑士归来 第一神算:纨绔大小姐 刺客之王 天启预报 大神你人设崩了