是什么限制了与 Kubernetes 服务的连接数?
What limits the number of connections to a Kubernetes service?
我在下面包含了更多详细信息,但我要回答的问题在标题中。我目前正在尝试解决这个问题,但我想我会先在这里问一下,以防有人知道答案 off-hand.
关于我的设置
我在 Google Compute Engine 集群上有一个 Kubernetes 服务 运行(通过 Google Container Engine 启动)。它由一个服务(用于 front-end 稳定 IP)、一个复制控制器和 pods 运行 一个 Python 服务器组成。服务器是端口上的 Python gRPC 服务器 sleep-listening。
有2个pods(复制控制器中指定的2个副本),1个rc,1个服务,4个GCE实例(根据CPU设置为自动扩展到5个)。
我希望该服务能够处理任意数量的想要流式传输信息的客户端。但是,我目前看到该服务仅与 16 个客户端通信。
我假设连接数受限于我拥有的 GCE 实例的数量,或者受限于 pods 的数量。我正在做实验,看看改变这些数字会如何影响事情。
想通了:
- 这不是 GCE 实例的数量:我增加了 GCE 实例的数量,而流式客户端的数量没有变化。
- 是pods的数量:每个pod显然可以处理8个连接。我只是用
kubernetes scale rc <rc-name> --replicas=3
扩展了我的复制控制器以支持 24 个客户端。
我将研究根据传入的 HTTP 请求自动缩放(使用水平 Pod 缩放器?)pods 的数量。
更新 1:
Kubernetes doesn't currently support 基于 HTTP 的水平 pod 缩放。
更新二:
显然这里还有其他因素在起作用,例如服务器可用线程池的大小。使用 N 个线程和 P pods,我能够维护 P*N 个开放通道。这对我特别有效,因为我的客户只需要每隔几秒轮询一次服务器,并且在不活动时休眠。
我在下面包含了更多详细信息,但我要回答的问题在标题中。我目前正在尝试解决这个问题,但我想我会先在这里问一下,以防有人知道答案 off-hand.
关于我的设置
我在 Google Compute Engine 集群上有一个 Kubernetes 服务 运行(通过 Google Container Engine 启动)。它由一个服务(用于 front-end 稳定 IP)、一个复制控制器和 pods 运行 一个 Python 服务器组成。服务器是端口上的 Python gRPC 服务器 sleep-listening。
有2个pods(复制控制器中指定的2个副本),1个rc,1个服务,4个GCE实例(根据CPU设置为自动扩展到5个)。
我希望该服务能够处理任意数量的想要流式传输信息的客户端。但是,我目前看到该服务仅与 16 个客户端通信。
我假设连接数受限于我拥有的 GCE 实例的数量,或者受限于 pods 的数量。我正在做实验,看看改变这些数字会如何影响事情。
想通了:
- 这不是 GCE 实例的数量:我增加了 GCE 实例的数量,而流式客户端的数量没有变化。
- 是pods的数量:每个pod显然可以处理8个连接。我只是用
kubernetes scale rc <rc-name> --replicas=3
扩展了我的复制控制器以支持 24 个客户端。
我将研究根据传入的 HTTP 请求自动缩放(使用水平 Pod 缩放器?)pods 的数量。
更新 1:
Kubernetes doesn't currently support 基于 HTTP 的水平 pod 缩放。
更新二:
显然这里还有其他因素在起作用,例如服务器可用线程池的大小。使用 N 个线程和 P pods,我能够维护 P*N 个开放通道。这对我特别有效,因为我的客户只需要每隔几秒轮询一次服务器,并且在不活动时休眠。