嗨, 我最近遇到了称为容器的虚拟化。 这是关于自动缩放。 我已经读到,当当前容器资源不足时,它将向主机添加一个新容器。添加新容器如何节省资源?
可以解释
的规模场景1:运行所有资源的容器(为主机os保留资源)
vs
方案2:两个容器在同一容器中运行的规模 主机(容器正在使用其中消耗的一半资源 以前的情况)
如果方案2中的规模更大,那么谁能解释通过拥有两个容器甚至整个总资源相同,规模是如何增加的?
答案 0 :(得分:3)
考虑以下有关应用程序工作负载的情况(例如,此处仅考虑CPU和内存)-
正常工作量 它需要4核,16 GB内存。
最大工作量 它需要8核,32 GB内存。 假设活动爆发(最大工作量)每天仅发生2个小时。
案例1-未对应用程序进行容器化 该应用程序必须保留8个内核和32 GB的内存才能正常工作,以便能够以预期的性能处理最大的工作负载。 但是4核和16 GB的内存每天将浪费22个小时。
案例2-容器化应用程序后 让我们假设产生了一个包含4个核心和16 GB内存的容器。然后,其余资源,4个核心和16 GB内存可用于群集中的其他应用程序,并且在最大工作量的情况下,每天仅会为该应用程序生成另一个具有相同配置的容器2小时 是必需的。
因此,在对应用程序进行容器化时,群集中的资源得到了最佳利用。
如果单台计算机没有应用程序所需的全部资源怎么办? 在这种情况下,如果将应用程序容器化,则可以从群集中的多台计算机分配容器/资源。
提高容错能力 如果应用程序在单台计算机上运行,并且计算机出现故障,则整个应用程序将不可用。但是在容器化应用的情况下 在群集中的不同计算机上运行。如果机器出现故障,那么将只有很少的容器不可用。
关于您的问题,如果应用程序的工作负载在整个生命周期内都是统一的,那么就规模而言,将应用程序拆分为较小的容器没有任何好处。但是您仍然可以考虑将应用程序容器化以获得其他好处。就规模而言,仅当工作负载变化或将来预计会有更多工作负载时,才对应用程序进行容器化。
答案 1 :(得分:2)
即使总资源相同,拥有两个容器又如何增加规模?
通常不会。如果您有一个单线程应用程序,并且有一个多核主机,那么在同一主机中扩展容器的多个实例将使您可以通过该应用程序访问更多核。如果多线程应用程序受到内部资源争用的限制并且未使用所有内核,那么这也可能会有所帮助。但是对于大多数多线程进程而言,在单个主机上扩展应用程序将不会提高性能。
在多节点环境中扩展的帮助是允许应用程序在群集中未被充分利用的其他主机中运行。这是水平缩放比例,最主要针对12个因子的应用。它允许部署到云环境的应用程序通过添加更多节点而不是试图为单个大型节点查找更多资源来扩展具有更多副本/碎片。