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

Kubernetes 如何在GKE上设置服务负载平衡器请求超时,kubernetes,google-cloud-platform,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我在GKE上有一个LoadBalancer类型的服务,它指向运行nginx的GKE部署。我的nginx将所有超时设置为10分钟,但在收到响应之前必须等待处理的HTTP/HTTPS请求在30秒后被中断,并出现500个错误。我的设置: http { proxy_read_timeout 600s; proxy_connect_timeout 600s; keepalive_timeout 600s; send_timeout 600s; } 显然,在LoadBala

我在GKE上有一个LoadBalancer类型的服务,它指向运行nginx的GKE部署。我的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使用的类型为LoadBalancer的服务上实现这一点。我还查看了1.7+版本的所有Kubernetes文档(我们使用的是1.8.7-gke.1),没有任何关于设置超时的内容。是否有可以添加到yaml文件的设置来执行此操作

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

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

到目前为止,您无法从YAML文件执行此操作。

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

他们已经在2016年讨论了这一变化:

特定用例:GCE后端设置了30秒的默认超时,这对于某些长请求来说是不够的。我希望能够控制每个后端的超时

然而我建议您查看谷歌云文档的这一部分,该部分专门讨论了t

更新 检查问题,因为他们正在取得进展

我知道18天前有一个v1.0.0版本。这就是你所说的@nicksardo的主要重构的完成吗? 在LB关闭连接之前,是否可以配置连接的空闲时间? 更新 上述问题现已解决,有关设置超时(和其他后端服务设置)的文档可在此处获得:


从2021年4月起,您可以通过GKE/GCE配置实现这一点。这是说明书。 基本上,您可以创建一个类似以下内容的
BackendConfig
资源:

apiVersion:cloud.google.com/v1 种类:BackendConfig 元数据: 名称:我的后端配置 规格: 超时秒:40 连接训练: 排水时间:60秒 (
kubectl apply-f my backendconfig.yaml

然后使用注释将其连接到您的GKE服务资源:

apiVersion:v1 种类:服务 元数据: 姓名:我的服务 标签: 目的:bsc配置演示 注释: cloud.google.com/backend-config:'{“端口”:{“80”:“我的后端配置”} cloud.google.com/neg:“{“入口”:true}” 规格: 类型:集群 选择器: 目的:bsc配置演示 端口: -港口:80 协议:TCP 目标港:8080 (
kubectl apply-f my service.yaml

如果愿意,BackendConfig资源(和服务)可以放置在yaml中具有元数据名称空间指定的名称空间中

元数据:
名称空间:我的名称空间

Hi,检查答案的更新