Kubernetes 如何使用nginx入口控制器,每个pod仅允许一个连接

Kubernetes 如何使用nginx入口控制器,每个pod仅允许一个连接,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我的Kubernetes集群使用一个复制集来运行N个类似的pod。每个pod只能处理一个到资源限制的websocket连接。我的Kubernetes使用nginx入口控制器 有没有办法让nginx只为每个pod分派一个传入websocket连接,并且在缺少可用pod的情况下拒绝传入连接?您可以使用周期秒相对较低的,并且显然,{success,failure}阈值设置为1,以便尽快释放或不释放pod 基本上,您可以设置一个脚本或一个简单的HTTP端点,在建立连接时返回失败状态代码:因此Pod端点将

我的Kubernetes集群使用一个复制集来运行N个类似的pod。每个pod只能处理一个到资源限制的websocket连接。我的Kubernetes使用nginx入口控制器

有没有办法让nginx只为每个pod分派一个传入websocket连接,并且在缺少可用pod的情况下拒绝传入连接?

您可以使用周期秒相对较低的,并且显然,
{success,failure}阈值设置为1,以便尽快释放或不释放pod

基本上,您可以设置一个脚本或一个简单的HTTP端点,在建立连接时返回失败状态代码:因此Pod端点将从服务端点列表中删除,并且不会被入口控制器选择


请记住,此解决方案可能会受到竞争条件的影响,但这是最简单的解决方案:更好的解决方案可能是使用服务网格,但这意味着额外的复杂性。

我对Kubernetes Nginx ingress设置不太熟悉,但是,假设它公开了一些用于设置服务器组的Nginx配置选项,那么在
server
函数中有一个名为
max\u conns
的参数,可用于限制与给定服务器的连接数。假设入口控制器中存在映射,则应该可以为正在创建并添加到引擎盖下Nginx配置的每个服务器设置
max_conns=1


编辑:粗略的研究一下,看起来这确实是可能的。看起来您可以在
ConfigMap
中根据此处的参数主列表将其指定为
nginx.org/max conns

Hi@user1886318,下面的答案是否解决了您的问题?