如何在GKE

时间:2018-03-28 18:11:25

标签: kubernetes google-cloud-platform google-kubernetes-engine

我在LoadBalancer类型的GKE上有一个Service,它指向运行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上找到了一个步骤,其中概述了设置带有超时后端服务Load Balancer的Ingress,但是在Type = LoadBalancer的服务上找不到如何做到这一点用于GKE。我还查看了1.7版本的所有Kubernetes文档(我们的版本是1.8.7-gke.1),而不是设置超时。我可以添加到我的yaml文件中进行设置吗?

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

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

2 个答案:

答案 0 :(得分:2)

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

目前有一项公开功能请求,我建议您订阅并关注:

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

  

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

但是我建议您查看Google Cloud Documentation的这部分内容,特别是configurable response timeou t。

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

  

我看到18天前有一个v1.0.0版本。这是你谈到@nicksardo的主要重构的完成吗?   是否有可能在LB关闭之前配置连接空闲的时间?   的更新   上面提到的问题现已关闭,有关设置超时(以及其他后端服务设置)的文档可在此处获得:   https://cloud.google.com/kubernetes-engine/docs/how-to/configure-backend-service

答案 1 :(得分:0)

自 2021 年 4 月起,您可以通过 GKE/GCE 配置执行此操作。 Here 是指令。 本质上,您创建了一个与此类似的 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