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

vdgimpew  于 2023-06-28  发布在  Kubernetes
关注(0)|答案(2)|浏览(254)

我目前在GKE(k8s 1.2)上配置了一个Ingress来向我的应用程序的pod转发请求。我有一个请求可能需要很长时间(30秒),并且应用程序超时(504)。我观察到,当这样做时,我收到的响应不是我自己的504,而是在60秒后来自Google Loadbalancer的502。
我已经尝试了不同的状态码和持续时间,正好在30秒后,我开始接收这种奇怪的行为,无论状态码发出。
有人知道我该怎么解决吗?有没有办法重新配置这种行为?

sczxawaw

sczxawaw1#

从www.example.com开始1.11.3-gke.18,可以直接在kubernetes中配置超时设置。
首先添加一个backendConfig:

# For GKE < 1.16.8-gke.3 use "cloud.google.com/v1beta1" below
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: my-bsc-backendconfig
spec:
  timeoutSec: 40

然后在Service中添加一个annotation以使用此backendConfig:

apiVersion: v1
kind: Service
metadata:
  name: my-bsc-service
  labels:
    purpose: bsc-config-demo
  annotations:
   # For GKE < 1.16.8-gke.3 use "beta.cloud.google.com/backend-config" below 
   cloud.google.com/backend-config: '{"default": "my-bsc-backendconfig"}'
spec:
  type: NodePort
  selector:
    purpose: bsc-config-demo
  ports:
    - port: 80
      protocol: TCP
      targetPort: 8080

瞧,你的入口负载均衡器现在有一个40秒的超时,而不是默认的30秒。
参见https://cloud.google.com/kubernetes-engine/docs/how-to/configure-backend-service#creating_a_backendconfig

lyr7nygr

lyr7nygr2#

在GKE上创建入口时,默认设置是使用您提供的后端创建GLBC HTTP负载均衡器。默认情况下,它被配置为30秒的超时,以便您的应用程序处理请求。
如果你需要更长的超时时间,你必须在谷歌云控制台的HTTP Load balancer后端设置后手动编辑。

相关问题