如何在 GKE 上配置 Ingress 请求超时
How to configure Ingress request timeouts on GKE
我目前在 GKE (k8s 1.2) 上配置了一个 Ingress,用于将请求转发到我的应用程序 pods。我有一个请求可能需要很长时间(30 秒)并且我的应用程序超时 (504)。我观察到这样做时,我收到的响应不是我自己的 504,而是 60 秒后看起来像 Google 负载均衡器的 502。
我尝试过不同的状态代码和持续时间,恰好在 30 秒后我开始收到这种奇怪的行为,而不管发出的状态代码如何。
有人知道我该如何解决这个问题吗?有没有办法重新配置此行为?
在 GKE 上创建入口时,默认设置是使用您提供的后端创建 GLBC HTTP 负载平衡器。默认情况下,它被配置为 30 秒超时,以便您的应用程序处理请求。
如果您需要更长的超时时间,您必须在 google 云控制台中 HTTP Load balancer 的后端设置后手动编辑它。
从1.11.3-gke.18开始,可以直接在kubernetes中配置超时设置。
首先添加一个backendConfig:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 40
然后在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
中提琴,您的入口负载均衡器现在的超时时间为 40 秒,而不是默认的 30 秒。
我目前在 GKE (k8s 1.2) 上配置了一个 Ingress,用于将请求转发到我的应用程序 pods。我有一个请求可能需要很长时间(30 秒)并且我的应用程序超时 (504)。我观察到这样做时,我收到的响应不是我自己的 504,而是 60 秒后看起来像 Google 负载均衡器的 502。
我尝试过不同的状态代码和持续时间,恰好在 30 秒后我开始收到这种奇怪的行为,而不管发出的状态代码如何。
有人知道我该如何解决这个问题吗?有没有办法重新配置此行为?
在 GKE 上创建入口时,默认设置是使用您提供的后端创建 GLBC HTTP 负载平衡器。默认情况下,它被配置为 30 秒超时,以便您的应用程序处理请求。
如果您需要更长的超时时间,您必须在 google 云控制台中 HTTP Load balancer 的后端设置后手动编辑它。
从1.11.3-gke.18开始,可以直接在kubernetes中配置超时设置。
首先添加一个backendConfig:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 40
然后在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
中提琴,您的入口负载均衡器现在的超时时间为 40 秒,而不是默认的 30 秒。