在Docker容器中的AutoScaling

我一直在考虑Docker容器化,但是现在还有一些东西仍然让我感到困惑。 我知道所有的容器都被分组到一个集群中,像Docker Swarm,DC / OS,Kubernetes或Rancher这样的集群pipe理工具可以用来pipe理docker集装箱。 我一直在用DC / OS和Kubernetestesting容器集群pipe理,但仍然有一些问题没有回答给我。

集装箱级别的自动缩放如何帮助我们在生产服务器上运行? 应用程序如何提供来自多个容器的stream量?

假设我们已经使用容器部署了一个Web应用程序,并且它们已经自动缩放。 交通如何stream向集装箱? 会议如何pipe理?

计算自动缩放容器的指标是什么?

DC / OS中的自动调节(注:Mesosphere是公司,DC / OS的开源项目)自动调节在文档中有详细描述。 基本上与Kubernetes相同,您可以使用CPU利用率等低级度量标准来决定何时增加应用程序实例的数量,或者使用更高级别的应用程序吞吐量,例如使用Microscaling方法。

关于你的问题,路由如何工作(请求如何转发到一个实例,这是一个单一的容器运行):你需要一个负载平衡器,DC / OS再次提供这个开箱即用。 再次, 文档中详细介绍了这些选项,主要是:基于HAProxy的南北或基于IPtables的东西(集群内部)负载平衡器。

Kubernetes有一个叫service概念。 Kubernetes服务是一个抽象,它定义了Pod的逻辑集合以及访问它们的策略。 Kubernetes使用服务来提供来自多个容器的stream量。 你可以在这里阅读更多关于服务。

AFAIK,会话在Kubernetes之外进行pipe理,但可以通过将service.spec.sessionAffinity设置为“ClientIP”来select基于Client-IP的会话关联。 您可以在这里阅读更多关于服务和会话亲和力

像cpu和内存这样的多个指标可以用于自动缩放容器。 有一个很好的博客,您可以阅读有关自动缩放的时间和方式。