在容器中按比例放大和按比例缩小

时间:2019-12-11 05:28:38

标签: docker kubernetes containers microservices

我正在学习容器和微服务。这个问题可能是基本的。让我们假设我的PC上的容器上运行着一个微服务。我想知道在容器放大和缩小期间会发生什么。请举例说明

2 个答案:

答案 0 :(得分:1)

从问题的角度来看,我认为这是一个更多的设计问题,并且您已经标记了kubernetes和docker这个事实,我将假设您打算使用或已经在某种程度上使用了它。

现在,作为问题的前提,考虑到您拥有微服务,或者在这种情况下,它可以与在计算机或VM上运行的Docker容器互换使用。

那么现在扩展服务意味着什么

在Docker中

  • 您必须在所述VM上运行多个运行相同图像的容器实例
  • 这些实例是在为同一应用程序或Web应用程序或静态网站提供服务的多个指定端口上运行的相同docker映像。
  • 此缩放后的应用程序或Web应用程序现在已缩放为2的大小,并运行在为简单Web应用程序提供服务的端口8080和8081上。
  • 现在要确保这些扩展的应用程序对您的用例有用,您必须在这两个应用程序之上添加一个负载平衡器,这可以使用Nginx代理完成。
  • 要缩小规模,这意味着您将不得不停止使用docker stop id
  • 运行这些容器实例之一
  • 因此,您现在已缩小到1的大小比例。

在Kubernetes中

  • 在kubernetes编排环境中,间接使用docker来完成其出色的工作,负载平衡和扩展机制等已由kubernetes本身处理。
  • 因此,在这种情况下,假设您有一个在容器中运行的Web应用程序容器,当您执行命令“ kubectl scale pod_name 2”时,这将调用Kubernetes API并进行扩展或指示以下docker启动Docker映像的另一个实例。
  • 由于负载均衡器是由Kubernetes处理的,因此我们将为我们提供一个简单的端点(还有其他一些东西,例如服务和负载均衡器端点,但是我们可以将其忽略)
  • 以类似的方式,您可以按比例缩小Pod中运行的实例数量,而kubernetes将处理所有其他事务,同时处理活动流量。

答案 1 :(得分:0)

您的微服务可能会作为多个复制容器运行,每个容器执行相同的功能。例如,如果您有一个Web服务,而不是一个Web服务器,则可能有多个Web服务器,每个Web服务器作为容器运行并提供相同的网页。然后,您还将在这些副本前面有一个负载平衡器,它将传入的请求转发到这些容器中的任何一个。

这样做的原因是为了增加微服务的容量。如果单个Web服务器每秒可以处理10个请求,那么10个Web服务器在一起可以每秒处理100个请求。因此,您可以将服务的总容量增加到每秒100个请求。

现在,向上/向下缩放仅意味着增加/减少副本容器的数量。例如,您最多可以扩展20个副本,这将服务的总容量增加到每秒200个请求。如果不需要那么多容量并希望节省资源,则可以将应用程序缩减为5个副本,这会将容量减少到每秒50个请求。

在Kubernetes中,容器以Pods的身份运行,管理一组复制的Pod的对象是Deployment,而负载均衡器是Service