通过Kubernetes上的IPVS负载均衡器公开多个服务(或服务实例)

时间:2019-06-15 23:04:38

标签: kubernetes

我有一个应用程序,希望在Kubernetes(当前在AWS ECS)上运行。该应用程序有两个TCP端口,都不是http。一个端口(例如APORT)在所有应用程序实例(副本)中都是通用的,应该进行负载平衡。另一个叫做BPORT,但是它特定于该应用的特定实例,例如吊舱/容器特定。 现在这是我的问题:应用程序使用外部控制器注册了它的BPORT,并且控制器应该能够通过该端口访问此应用程序。我可以使用NodePort将NodePort暴露给外部IP。从我的pod中,我将获得该NodePort的值并向外部控制器注册。 但是,服务仅在所有副本之间分配单个NodePort,因此,如果要多个副本,则必须运行多个服务。 运行多个服务在APORT端提出了一个问题,因为此端口应该是负载平衡的,理想情况下位于IPVS的后面,据我所知,IPVS不允许在多个服务之间进行LB。 理想情况下,我希望能够添加更多副本来扩展整个过程,而又不会中断/重启服务。 有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

Kubernetes并不能真正解决这个问题,或者至少它没有参与其中。您可以像平常一样将Service对象用于A端口,但对于B端口,则根本不使用Service,必须直接使用pod IP,就像这些是服务器而不是容器一样。 / p>