我在类型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