Ingress超时配置的几种方法

目前在MAAS服务中很多地方都需要设置更长的超时时间,是由于有时有超长的提示词导致需要更长的响应时间,这样需要更改Ingress的超时配置,Ingress的超时配置默认是60s,一般有两种配置方式可以调整这个超时时间

1.全局 ConfigMap
2.单 Ingress 注解

其中单 Ingress 注解的优先级更高,当上述两者都有配置时,最后单 Ingress 注解的配置是最终生效的效果。
超时配置主要有以下三个参数控制

proxy-connect-timeout:与后端建立 TCP 连接超时(推荐 5–10s)
proxy-read-timeout:从后端读取响应的间隔超时(按业务调整,如 300s)
proxy-send-timeout:向后端发送请求的间隔超时(通常同 read)

ConfigMap 全局配置
可以直接修改 ingress-nginx 命名空间下的 ConfigMap

kubectl edit cm -n ingress-nginx ingress-nginx-controller

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
data:
  proxy-connect-timeout: "10"   # 10秒
  proxy-read-timeout: "300"     # 5分钟
  proxy-send-timeout: "300"      # 5分钟

默认可能没有data这个字段,我们直接在最后添加上述配置即可。
改好以后可以重启下ingress-nginx控制器
kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx
我实测中实际可以不用重启ingress-nginx-controller,它会自动检测 ConfigMap 的配置变化,自动重启控制器中的 Nginx

单 Ingress 注解配置
在 Ingress YAML 中添加 annotations,仅对当前规则生效:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "10"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
spec:
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app
            port:
              number: 80

然后更新下 Ingress 规则即可。

kubectl apply -f my-ingress.yaml

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1175

评论列表

0%