通过容量优化器在 Kubernetes 中实现卓越的云成本优化

Kubernetes 正迅速成为世界上最受欢迎的开源容器编排工具。用于构建和管理基于云原生微服务的应用程序以及现有应用程序的容器化,其采用率不断增加。已经有 61% 的企业采用了 Kubernetes,30% 的企业计划在未来 12 个月内采用它。

Kubernetes 或任何云环境中的自动缩放对于企业来说至关重要,因为它使用户能够自动添加和删除实例以满足工作负载的需求。这是一种有效的云成本优化方法,特别是对于依赖 Kubernetes 进行流程的企业而言。

然而,Kubernetes 中的自动缩放可能会导致与企业意图相反的结果。旨在最大限度减少浪费的云成本优化解决方案反而会增加您的成本并导致您的云环境过度配置资源。

这是怎么发生的?大多数应用程序开发人员请求将大量资源分配给他们的应用程序,以减轻最坏情况的影响。如果这次输入数据大 10 倍怎么办?如果这次新代码需要两倍的内存和两倍的 CPU 怎么办?开发人员通常没有信息来确切知道他们需要分配多少资源来处理典型的最坏情况。有时,他们甚至不知道要分配多少来处理典型场景。

开发人员希望他们的应用程序能够在合理的时间内成功完成,即使是在那些最坏的情况下。这种愿望构成了他们的云成本优化方法的基础。这就是为什么他们要求大量分配。事实上,这种最坏的情况很少发生。平均而言,应用程序仅使用分配资源的一小部分。事实上,一些研究表明 32% 的云预算被浪费了,部分原因是过度分配。

云自动缩放器的低效

不幸的是,自动缩放是根据资源分配与资源利用率来实现的。为了优化云成本,当调度程序无法向集群添加更多应用程序时,云自动缩放器会添加更多实例,因为所有现有资源都已分配。

想象一个有两个节点的集群。假设一个应用程序请求两个节点。应用程序可能最终只使用八个内核,但自动缩放器并不知道这一点。

随着越来越多的应用程序被提交请求更多的核心,自动缩放器将添加更多的实例,即使现有实例的利用率仅为 50%。如果新应用程序也只使用分配的一小部分,则新实例也将未得到充分利用。

结果是更多的浪费实例,并最终导致云计算费用膨胀。

Pepperdata Capacity Optimizer:卓越的云成本优化

Pepperdata Capacity Optimizer 将云成本优化提升到一个更高的水平。它通过使调度程序或集群管理器能够在 YARN 和 Kubernetes 中基于资源利用率而不是资源分配来调度工作负载,从而解决了云自动缩放器效率低下的问题。

一旦达到配置的资源利用率,自动缩放器就会添加更多实例。通过 Pepperdata Capacity Optimizer 进行的云成本优化不仅可以最大化每个现有实例的利用率,还可以确保仅当现有实例在自动缩放环境中得到充分利用时才添加新实例。 Pepperdata 管理云平台的自动缩放行为,因此您不必这样做。

为了优化 Kubernetes 和 YARN 中的云成本,Capacity Optimizer 执行以下操作:

同样,即使许多实例接近空闲或空闲,云平台也不会缩减实例。在这种情况下,如果一定数量实例的利用率低于特定阈值,Capacity Optimizer 会指示自动缩放器缩减。

通过 Pepperdata Capacity Optimizer 优化云成本,可以减少用于完成相同工作的实例,从而为您节省直接成本。

事实上,当在运行标准大数据分析基准的 Kubernetes 集群上启用 Capacity Optimizer 时,Pepperdata 发现查询持续时间减少了 30%,工作负载容量增加了 35%。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627