更改 Kubernetes 的节点代理 tcp 保持连接时间



如何正确更改节点代理的TCP保持连接时间?

我在 Google Container Engine 中运行 Kubernetes,并设置了一个由 HTTP(S) Google Load Balancer 支持的入口。当我不断向入口发出 POST 请求时,我每 80 秒左右就会收到一次 502 错误。backend_connection_closed_before_data_sent_to_client云日志记录中的错误,这是因为 GLB 的 tcp 保持连接(600 秒)大于节点代理的保持连接(不知道它是什么)。

https://cloud.google.com/compute/docs/load-balancing/http/中详细介绍了记录的错误。

谢谢!

您可以使用每个 GKE 集群上存在的自定义资源BackendConfig来配置超时和其他参数,如 CDN 以下是文档

此处的示例显示了如何在入口上进行配置

这是BackendConfig定义:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 40
connectionDraining:
drainingTimeoutSec: 60

这就是如何通过注释在入口定义上使用

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

只是为了理解,当你使用 Google 解决方案来平衡和管理你的 Kubernetes 入口时,你会有GLBCpod 在kube-system命名空间中运行。

你可以用 :

kubectl -n kube-system get po

这些容器旨在路由来自实际 Google 负载均衡器的传入流量。

我认为超时应该在那里配置,在GLBC.您应该检查可以配置哪些注释或配置映射GLBC(如果有)。

您可以在那里找到详细信息:

  • https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/cluster-loadbalancing/glbc
  • https://github.com/kubernetes/ingress/blob/master/controllers/gce/README.md
  • https://github.com/kubernetes/ingress/blob/master/controllers/gce/rc.yaml#L64

就我个人而言,我现在更喜欢使用Nginx Ingress Controller,它具有必要的annotationsConfigMap支持。

看:

  • https://github.com/kubernetes/ingress/blob/master/controllers/nginx/README.md

最新更新