改变Kubernetes' node-proxy tcp keepalive time

时间:2017-06-24 05:45:57

标签: proxy kubernetes load-balancing google-kubernetes-engine

如何正确更改节点代理的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/

谢谢!

2 个答案:

答案 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,并且必须支持annotationsConfigMap

见: