Docker 个容器中的自动缩放

AutoScaling in Docker Containers

我研究 Docker 容器化已有一段时间了,但仍有一些事情让我感到困惑。我了解到所有容器都被分组到一个集群中,集群管理工具如 Docker Swarm、DC/OS、Kubernetes 或 Rancher 可用于管理 docker 容器。我一直在使用 DC/OS 和 Kubernetes 测试容器集群管理,但仍有一些问题没有得到解答。

容器级别的自动缩放如何帮助我们在生产服务器中使用?应用程序如何为来自多个容器的流量提供服务?

假设我们已经使用容器部署了一个 Web 应用程序并且它们已经自动缩放。流量如何流向容器?如何管理会话?

自动缩放容器计算了哪些指标?

Kubernetes 有一个名为 service 的概念。 Kubernetes 服务是一种抽象,它定义了 Pods 的逻辑集和访问它们的策略。 Kubernetes 使用服务来处理来自多个容器的流量。您可以阅读有关服务的更多信息 here

AFAIK,会话在 kubernetes 外部管理,但可以通过将 service.spec.sessionAffinity 设置为 "ClientIP" 来选择基于客户端 IP 的会话亲和力。您可以阅读有关服务和会话亲和力的更多信息 here

cpu 和内存等多个指标可用于自动缩放容器。有一篇很好的 blog 您可以阅读有关自动缩放、何时以及如何缩放的内容。

DC/OS中的autoscaling(注:Mesosphere是公司,DC/OS开源项目)autoscaling在docs. Essentially the same as with Kubernetes, you can use either low-level metrics such as CPU utilization to decide when to increase the number of instances of an app or higher-level stuff like app throughput, for example using the Microscaling方法中有详细描述。

关于您的问题,路由是如何工作的(请求如何转发到一个实例,即单个容器 运行):您需要一个负载均衡器,DC/OS 为您提供了这个盒子外面。同样,这些选项在 docs 中有详细说明,本质上是:基于 HAProxy 的南北或基于 IPtables 的东西(集群内部)负载平衡器。