如何在GKE上设置服务负载平衡器请求超时



我在类型LoadBalancer上有一个服务,指向GKE部署运行NGINX。我的NGINX将所有超时设置为10分钟,但是HTTP/HTTPS请求必须等待处理,然后再收到响应后,在30秒后使用500个错误获得了截止。我的设置:

http {
    proxy_read_timeout 600s;
    proxy_connect_timeout 600s;
    keepalive_timeout 600s;
    send_timeout 600s;
}

显然在LoadBalancer的某个地方有30秒的默认设置。

倒入文档后,我只在Google上找到了一个逐步介绍,概述了使用超时的后端服务负载平衡器设置入口与GKE一起使用。我还回顾了版本1.7 的所有Kubernetes文档(我们使用1.8.7-gke.1(,而没有设置超时的文档。我可以将设置添加到我的yaml文件中吗?

如果有帮助,我为AWS找到了以下内容,这似乎是我在GKE上需要的:

  annotations:
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"

截至2021年4月,您可以通过GKE/GCE配置来执行此操作。这是说明。本质上,您可以创建与以下方式相似的BackendConfig资源:

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: my-backendconfig
spec:
  timeoutSec: 40
  connectionDraining:
    drainingTimeoutSec: 60

( kubectl apply -f my-backendconfig.yaml(

,然后通过注释将其连接到您的GKE服务资源:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  labels:
    purpose: bsc-config-demo
  annotations:
    cloud.google.com/backend-config: '{"ports": {"80":"my-backendconfig"}}'
    cloud.google.com/neg: '{"ingress": true}'
spec:
  type: ClusterIP
  selector:
    purpose: bsc-config-demo
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080

(kubectl apply -f my-service.yaml(

如果您愿意,可以将BackendConfig资源(和服务(放在YAML中的元数据名称空间的名称空间中。

metadata:
  namespace: my-namespace

到目前为止,您无法从yaml文件中完成。

目前有一个开放的功能请求,我建议您订阅并遵循:

  • https://github.com/kubernetes/ingress-gce/issues/28

他们已经在讨论2016年的这一变化:问题。

"特定用例:GCE后端的默认超时为30秒,这对于某些长期请求不足。我希望能够控制每次余量的超时。"

但是,我建议您检查Google云文档的这一部分,专门讨论有关可配置的响应超时。

更新检查问题是因为他们正在进步

我看到18天前有一个V1.0.0发行版。这是您谈论过@nicksardo的主要重构的完成吗? 是否可以配置连接在LB关闭之前可以闲置多长时间? 更新 上面提到的问题现已关闭,用于设置超时(和其他后端服务设置(的文档可在此处提供: https://cloud.google.com/kubernetes-engine/docs/how-to/configure-backend-service

最新更新