如何正确更改节点代理的TCP保持活动时间?
我在Google Container Engine中运行Kubernetes并设置了一个由HTTP(S)Google Load Balancer支持的入口。当我不断向入口发出POST请求时,我每80秒左右就会收到一次502错误。云记录中出现backend_connection_closed_before_data_sent_to_client
错误,这是因为GLB的tcp keepalive(600秒)大于node-proxy的keepalive(不知道它是什么)。
记录的错误详见https://cloud.google.com/compute/docs/load-balancing/http/。
谢谢!
答案 0 :(得分:0)
您可以使用每个GKE群集上存在的自定义资源BackendConfig
来配置超时,其他参数如CDN here就是文档
here中的示例显示了如何在入口上进行配置
这是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
答案 1 :(得分:-1)
为了便于理解,当您使用Google解决方案对Kubernetes Ingress进行负载均衡和管理时,您将在GLBC
命名空间中运行kube-system
个广告连接。
您可以通过以下方式查看:
kubectl -n kube-system get po
这些播客用于路由来自实际Google负载均衡器的传入流量。
我认为应该在GLBC
上配置超时。您应该检查可以配置哪些注释或ConfigMap GLBC
,如果有的话。
您可以在那里找到详细信息:
就个人而言,我现在更喜欢使用Nginx Ingress Controller,并且必须支持annotations
和ConfigMap
。
见: