2

a01.png

Kubernetes是Google开源的改变游戏规则的产品之一,它使许多组织的工作流程更加高效。有了Kubernetes,可以根据应用程序需求弹性管理应用程序的资源需求。它提供了根据工作负载需求为应用程序分配所需的CPU,磁盘和RAM的灵活性。

Kubernetes不仅可以节省组织的时间和精力,而且还可以为组织节省大量资金。这是因为现在可以根据CPU使用率,RAM使用率和任何其他自定义指标来水平扩展部署。这导致在基于云的部署上节省了大量成本,否则会由于整体系统垂直扩展性质的基础架构要求而导致成本下降。

a02.jpeg

毫无疑问,Kubernetes通过简化基于docker的微服务的部署和管理复杂性而使组织受益。但是运行k8s集群的成本仍然是其每月账单的很大一部分。我们真正需要的是一种可以降低k8成本而又不影响平台稳定性和性能的策略。

K8S费用激增的原因:

我们Opslyft将此视为挑战,并试图找到解决成本节约问题的解决方案。我们就应该采取什么方法以及导致k8s成本激增的确切方法进行了头脑风暴。我们得出了有关此问题的一些观察结果:

  • 没有启用集群级别的弹性伸缩器。由于担心Pod处于pending 状态而不能被调度,只能预留多余的Node节点,导致Kubernetes集群处于闲置状态而造成的成本很高。
  • Kubernetes应用程序的基本执行单元是pod。在调整群集的节点数量之前,必须配置合适的Pod扩缩策略,这样才能使应用程序的Pod数量以具有成本效益的方式扩展,而不会出现Pod 资源利用率不高。
  • 在Pod内运行的容器对请求和使用的CPU和内存量都有限制。设置这些限制时必须小心,因为可以通过为其分配最佳计算资源来进一步优化在容器中运行的容器的成本。
  • 对于非生产部署,应该有一个调度机制以使其仅在工作时间内可用。这将通过在定义的时间扩展部署来节省成本,并使部署仅在用户需要使用时可用。
  • 大多数生产应用程序不在spot实例上运行的唯一原因是由于实例回收而可能导致关键任务服务中断。但是,如果可以通过重新调度Pod来妥善处理spot实例回收,则可以节省大量成本。此处要求,服务需要能够优雅停机,然后一些组件能够感知spot机型的回收时间,在回收之前做好优雅停机处理。

在与我们的一位客户合作时,我们发布了有关Kubernetes集群成本状态的基准数字,并且鉴于上述观察结果是正确的,这浪费了多少成本。以下是我们发布的报告中的一些统计信息:

a03.jpg

我们为客户提供的解决方案:

经过我们的分析,我们意识到,实施上述解决方案后,Kubernetes集群每年可能节省的成本机会超过100,000美元。解决挑战的方法是建立一个可以满足以下成功标准的系统:

  • 应该提供清晰的可见性并详细主动监控Kubernetes成本。
  • 应该根据资源消耗模式自动调整集群中的节点数。
  • 应该根据易于配置的指标自动调整应用程序所需的Pod数量
  • 应根据Pod的CPU和RAM使用率来调整容器资源配给
  • 如果出现spot回收事件,应适当地重新调度Pod,以防止服务/应用程序级别的任何中断

a04.jpeg

edisonContainer

edisonContainer是一个AIOps系统,致力于在不影响平台稳定性和正常运行时间的前提下,优化Kubernetes集群的成本。一旦在Kubernetes集群中启动并运行,它将执行以下功能:

  • 提供自定义仪表板和Excel报告,以增强对容器成本的可见性。
  • 与Grafana其他BI工具集成,以生成容器成本的仪表板。
  • 根据资源消耗模式自动调整集群中节点的数量。
  • 自动化,用于根据易于配置的指标来调整应用程序所需的Pod数量。
  • 针对可用资源和相关成本发布有关容器利用率的通知
  • 从集群中的每个节点捕获spot终止事件,并适当地将Pod重新安排到其他节点。

以下是有关edisonContainer如何在Kubernetes集群上作为框架部署的高级示意图:

a06.png

结果

我们在客户的基础架构之一中部署了edisonContainer。在部署edisonContainer之后,组织发现了以下显著的成本节省:

  • Kubernetes集群的平均每月账单从〜$ 30k降至〜$ 17k
  • 合理分配每个Pod资源所节省的费用百分比-> 20%
  • 非工作时间缩减造成的节省百分比-> 15%
  • 使用竞价型实例节省的百分比-> 40%
  • 通过调整集群大小节省的百分比-> 20%

根据以上结果,我们预计该公司到年底将在Kubernetes上节省超过100,000美元。如果发生这种情况,我们将假设我们在公司成功实现容器优化的过程中仅扮演了重要的角色。

下一步

下一步,我们正在努力增加对其他容器编排系统的支持。 Mesos-Marathon在我们的即时列表中。同样,不要忘记,我们正在关注不断改进用于识别容器化环境中节省成本的其他途径的算法。


iyacontrol
1.4k 声望2.7k 粉丝

专注kubernetes,devops,aiops,service mesh。