首页 > 解决方案 > tcp 连接如何在 kubernetes 负载均衡器中工作

问题描述

嗨,我正在运行 5 个副本 tcp-client(可以扩展)并将 3 个服务作为 LoadBalancer 公开给外部网络以获取传入连接。此客户端在内部侦听端口 7777,并映射到外部端口 17777、27777、37777。

豆荚

[root@pwconfig-k8s-master0 tcp_poc]# kubectl get pods -l app=tcp-client
NAME                          READY   STATUS    RESTARTS   AGE
tcp-client-7dd545dcc9-54bdl   1/1     Running   0          4m47s
tcp-client-7dd545dcc9-628jn   1/1     Running   0          4m47s
tcp-client-7dd545dcc9-7pm44   1/1     Running   0          2m30s
tcp-client-7dd545dcc9-b287n   1/1     Running   0          4m47s
tcp-client-7dd545dcc9-mrmnm   1/1     Running   0          2m30s

服务

[root@pwconfig-k8s-master0 tcp_poc]# kubectl get svc | grep tcp-client
tcp-client        ClusterIP      y.y.y.y    <none>         7777/TCP                              4m36s
tcp-client-0      LoadBalancer   y.y.y.y   x.x.x.x   17777:30859/TCP                       2m55s
tcp-client-1      LoadBalancer   y.y.y.y     x.x.x.x   27777:30089/TCP                       2m55s
tcp-client-2      LoadBalancer   y.y.y.y    x.x.x.x   37777:31031/TCP                       2m55s

我们已经看到这种行为,一旦任何外部客户端建立 tcp 连接,连接就会被特定的 pod 修复并保持活动状态,直到外部客户端关闭连接。我想知道路由和 tcp 连接是如何工作的,因为我可以看到 LoadBalancing 是通过外部客户端 tcp 连接而不是数据包。因此,如果有 100 个外部客户端,它将在客户端上进行负载平衡,并路由 tcp 连接并与 pod 一起修复 tcp 连接的生命周期。

感谢您的帮助。

标签: kubernetestcpload-balancingkubernetes-ingresstcpclient

解决方案


推荐阅读