如何在GKE上配置Ingress请求超时

Mar*_*ten 25 kubernetes google-kubernetes-engine

我目前在GKE(k8s 1.2)上配置了Ingress,以便将请求转发到我的应用程序的pod.我有一个请求,可能需要很长时间(30秒)和我的应用程序超时(504).我观察到,当我这样做时,我收到的响应不是我自己的504,而是60秒后看起来像Google Loadbalancer的502 .

我玩了不同的状态代码和持续时间,正好在30秒后我开始接收这种奇怪的行为,无论发出的状态代码如何.

任何人都知道如何解决这个问题?有没有办法重新配置这种行为?

Mar*_*ten 10

在GKE上创建入口时,默认设置是将使用您提供的后端创建GLBC HTTP负载均衡器.默认情况下,应用程序处理请求的超时时间为30秒.

如果您需要更长的超时,则必须在Google云端控制台中的HTTP负载均衡器的后端设置后手动编辑此超时.

在此输入图像描述

  • @PrashanthB我们确实需要配置超时,如果可以通过注释进行配置,我们会很感激 (7认同)
  • 是的,控制器尝试选择合理的默认值。超时 > 30 秒并不是我们所要求的,所以我只是从测试版中删除了它。如果这是您经常需要的东西,我可以将其作为 Ingress 本身的注释推送。 (2认同)

Zhe*_* Li 8

从1.11.3-gke.18开始,可以直接在kubernetes中配置超时设置。

首先添加一个backendConfig:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: my-bsc-backendconfig
spec:
  timeoutSec: 40
Run Code Online (Sandbox Code Playgroud)

然后在Service中添加注释以使用此backendConfig:

apiVersion: v1
kind: Service
metadata:
  name: my-bsc-service
  labels:
    purpose: bsc-config-demo
  annotations:
    beta.cloud.google.com/backend-config: '{"ports": {"80":"my-bsc-backendconfig"}}'
spec:
  type: NodePort
  selector:
    purpose: bsc-config-demo
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
Run Code Online (Sandbox Code Playgroud)

而中提琴,您的入口负载平衡器现在具有40秒的超时,而不是默认的30秒。

请参阅https://cloud.google.com/kubernetes-engine/docs/how-to/configure-backend-service#creating_a_backendconfig

  • @pietro909 它可以位于自己的 yaml 文件中,也可以位于与其他资源一起的 yaml 文件中。请参阅 https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/ (2认同)