Kubernetes - 负载平衡每个连接的Web App访问

时间:2018-04-17 14:28:36

标签: kubernetes kubernetes-ingress kubernetes-apiserver

很长一段时间我没有来这里,我希望你没事。)

所以现在,我有幸与kubernetes合作!让我们开始吧! :)

[现有]

我有一个我每天工作的操作kubernetes集群。它由几个应用程序组成,其中一个是我们特别感兴趣的,它是Web管理界面。

我目前在我的群集中拥有一个主节点和四个节点。

对于我的Web应用程序,pod包含3个容器:web / mongo / filebeat,由于技术原因,我们决定为每个Web pod分配最多5个用户。

[我想要什么]

我想在每个节点(web0,web1,web2,web3)上部署一个Web pod,我已经可以做了,每个会话(1个会话= 1个用户)按如下方式分发:

Users repartition

目前,所有HTTP请求都由web0处理。

[问题]

我是否被迫通过外部负载均衡器(haproxy)?

我可以使用内部负载均衡器,配置服务吗?

有没有人对上述实施有经验?

我提前感谢那些可以帮助我的人:)

1 个答案:

答案 0 :(得分:0)

这通常取决于您部署Kubernetes基础架构的方式和位置,但您可以通过一些选项本地执行此操作。

首先,您需要扩展您的Web部署。这很简单:

kubectl scale --current-replicas=2 --replicas=3 deployment/web

如果您已部署到云提供商(例如使用kops或GKE的AWS),则可以使用服务。只需指定type as LoadBalancer即可。服务将为您的用户传播会话。

另一种选择是使用Ingress。为此,您需要使用入口控制器,例如nginx-ingress-controller,它是功能最强大且部署最广泛的。

这两个选项都会自动对传入的应用程序会话进行负载均衡,但它们可能不一定按照您在图像中描述的顺序进行,并且在可用的Web部署中是随机的