创建Azure Kubernetes入口控制器以限制每个pod 1个连接

创建Azure Kubernetes入口控制器以限制每个pod 1个连接,azure,kubernetes,kubernetes-pod,azure-container-service,Azure,Kubernetes,Kubernetes Pod,Azure Container Service,我正在使用Azure Kubernetes服务,并且有一个独特的场景,我希望每个pod只允许一个连接。我使用“高级”网络选项设置集群,这样每个pod都有自己的内部IP地址。问题是,所有这些POD都位于公共负载均衡器IP地址之后,负载均衡器决定将流量路由到何处 我需要A)设置一个规则,以便负载平衡器只允许每个pod有一个连接,并将新流量路由到新pod,每个请求1个,或者B)设置一个入口控制器来执行相同的操作。我认为B)是解决方案,但我没有明确的方法来实现这一点。我知道你可以通过URL进行路由,但是

我正在使用Azure Kubernetes服务,并且有一个独特的场景,我希望每个pod只允许一个连接。我使用“高级”网络选项设置集群,这样每个pod都有自己的内部IP地址。问题是,所有这些POD都位于公共负载均衡器IP地址之后,负载均衡器决定将流量路由到何处

我需要A)设置一个规则,以便负载平衡器只允许每个pod有一个连接,并将新流量路由到新pod,每个请求1个,或者B)设置一个入口控制器来执行相同的操作。我认为B)是解决方案,但我没有明确的方法来实现这一点。我知道你可以通过URL进行路由,但是你必须为每个pod设置一个规则,这绝对不是一个好主意。有没有办法建立一个规则,只限制每个pod 1个会话?或者其他类似的方法


谢谢。

这是一个非常好的问题。根据你在问题第二部分中提出的解决方案,我想在这里补充我的意见。然而,仅仅使用这些并不是有限的或可能的,有一些最有效的高级方法可以帮助人们建立到他们的吊舱的连接

A.)我正在研究如何从负载平衡器将流量路由到
pod
,通常Kubernetes集群中的每个pod默认都有自己的ip。如果我们知道你们是如何管理从外部世界到每个吊舱的交通流的。我可以将我的答案添加到可能解决方案的
部分。但不建议使用这种方法,因为您的pod很可能会死亡,并且可能会创建一个具有新ip的新pod。您需要手动将流量路由到新创建的pod,这就是为什么人们选择kubernetes而不是在VM上手动管理docker容器的原因。但我可能错了,你们可能有不同的复杂系统,这是有争议的

B.)正如您所说,研究入口和服务也是一种解决方案,不幸的是,目前没有入口控制器注释可用,每个pod只限制一个连接,但正如您所说的,基于URL将是解决方案的一部分,但正如您已经确定的那样,这种方式将产生开销,更像是每个pod有一个服务,每个服务有一个子域。它更像是一个单独的部署,具有与之关联的唯一服务和具有唯一子域的唯一服务。这是一个复杂的设置,但可行

根据评论进行编辑(删除HPA)

根据您添加的信息,我可以建议一种不同的方法,但使用kubernetes的方法有点错误,但根据您计划实现的系统类型,这也是有争议的。在其中一个节点上运行自己的代理服务器(HAProxy、NGINX或您的fav),并使用代理中pod的内部ip将流量从外部世界直接路由到您的pod。您可以根据代理配置中的连接数等进行路由记住,这不是kubernetes吊舱,它是您的操作系统运行的独立服务。但要注意,当节点死亡时,pod也会死亡,pod的ip地址也是如此

但这是我们不应该做的事情,我相信在几周左右的时间里,你会对K8s和它的运动部件有更全面的了解,你可能会说这是错误的,因为有大量的手动设置开销


希望这有帮助。

这是一个很好的问题。根据你在问题第二部分中提出的解决方案,我想在这里补充我的意见。然而,仅仅使用这些并不是有限的或可能的,有一些最有效的高级方法可以帮助人们建立到他们的吊舱的连接

A.)我正在研究如何从负载平衡器将流量路由到
pod
,通常Kubernetes集群中的每个pod默认都有自己的ip。如果我们知道你们是如何管理从外部世界到每个吊舱的交通流的。我可以将我的答案添加到可能解决方案的
部分。但不建议使用这种方法,因为您的pod很可能会死亡,并且可能会创建一个具有新ip的新pod。您需要手动将流量路由到新创建的pod,这就是为什么人们选择kubernetes而不是在VM上手动管理docker容器的原因。但我可能错了,你们可能有不同的复杂系统,这是有争议的

B.)正如您所说,研究入口和服务也是一种解决方案,不幸的是,目前没有入口控制器注释可用,每个pod只限制一个连接,但正如您所说的,基于URL将是解决方案的一部分,但正如您已经确定的那样,这种方式将产生开销,更像是每个pod有一个服务,每个服务有一个子域。它更像是一个单独的部署,具有与之关联的唯一服务和具有唯一子域的唯一服务。这是一个复杂的设置,但可行

根据评论进行编辑(删除HPA)

根据您添加的信息,我可以建议一种不同的方法,但使用kubernetes的方法有点错误,但根据您计划实现的系统类型,这也是有争议的。在其中一个节点上运行自己的代理服务器(HAProxy、NGINX或您的fav),并使用代理中pod的内部ip将流量从外部世界直接路由到您的pod。您可以根据代理配置中的连接数等进行路由记住,这不是kubernetes吊舱,它是您的操作系统运行的独立服务。但要注意,当节点死亡时,pod也会死亡,pod的ip地址也是如此

但这是我们不应该做的事情,我相信在几周左右的时间里,你会对K8s和它的运动部件有更全面的了解,你可能会说这是错误的,因为有大量的手动设置开销

希望这有帮助。

你的意思是什么