Docker容器中的自动缩放

Docker容器中的自动缩放,docker,kubernetes,dcos,Docker,Kubernetes,Dcos,我已经研究Docker集装箱化有一段时间了,但几乎没有什么事情让我感到困惑。我知道所有容器都被分组到一个集群中,可以使用诸如Docker Swarm、DC/OS、Kubernetes或Rancher之类的集群管理工具来管理Docker容器。我一直在用DC/OS和Kubernetes测试容器集群管理,但仍有一些问题没有回答 容器级别的自动扩展如何帮助我们在生产服务器中实现?应用程序如何服务于来自多个容器的流量 假设我们已经使用容器部署了一个web应用程序,并且它们已经自动伸缩。交通是如何流向集装箱

我已经研究Docker集装箱化有一段时间了,但几乎没有什么事情让我感到困惑。我知道所有容器都被分组到一个集群中,可以使用诸如Docker Swarm、DC/OS、Kubernetes或Rancher之类的集群管理工具来管理Docker容器。我一直在用DC/OS和Kubernetes测试容器集群管理,但仍有一些问题没有回答

容器级别的自动扩展如何帮助我们在生产服务器中实现?应用程序如何服务于来自多个容器的流量

假设我们已经使用容器部署了一个web应用程序,并且它们已经自动伸缩。交通是如何流向集装箱的?如何管理会话


为自动缩放容器计算哪些度量?

Kubernetes的概念称为
服务
。Kubernetes服务是一种抽象,它定义了一组逻辑POD和访问POD的策略。Kubernetes使用服务为来自多个容器的流量提供服务。您可以阅读有关服务的更多信息

当然,会话是在kubernetes之外管理的,但是可以通过将service.spec.sessionAffinity设置为“ClientIP”来选择基于客户端IP的会话关联。您可以阅读有关服务和会话关联的更多信息

cpu和内存等多种指标可用于自动缩放容器。关于自动缩放,您可以阅读一个很好的例子,时间和方式。

DC/OS中的自动缩放(注意:Mesosphere是公司,DC/OS是开源项目)中详细介绍了自动缩放。本质上与Kubernetes相同,您可以使用诸如CPU利用率之类的低级别指标来决定何时增加应用程序的实例数,也可以使用诸如应用程序吞吐量之类的更高级别指标,例如使用该方法


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

提供的博客中的有用信息。我完全了解如何设置kubernetes集群,我的问题是多个容器如何使用单个服务来满足来自多个用户的请求?它如何平衡负载,服务如何识别哪个会话与哪个容器绑定?它在实时生产应用程序中的用途。在同一部分中有一些图片--您看到了吗,服务可以像负载平衡器一样工作。是的,这解释了一部分…但是这些服务是如何维护的?路线配置和所有…关于中间层有什么想法吗?这不是一个简单的问题。就典型服务而言,当前的实现是基于iptables的。通常有一个随机概率匹配,但如果添加
sessionAffinity:ClientIP
,将使用
recent
模块添加新规则以保持相同的后端匹配。对于接收流量,您可以使用Ingress和IngressController(如contrib nginx Ingress),它不通过iptables,而是直接将端点添加到后端列表,因此以自己的方式处理会话关联性之类的事情在DC/OS的情况下,最常见的入站LB是Marathon LB,它有一个自动缩放示例:&