在项目管理领域,有一个被称为“铁三角”的概念–好、快、成本低。每个项目都需要在这三个方面进行权衡。例如,如果你想要更快地完成一个项目,它要么成本更高,要么需要牺牲质量。
事实证明,这个概念也适用于在 Kubernetes 上部署应用程序。
与项目管理示例类似,Kubernetes铁三角的三点是:
- 成本。分配了多少资源来运行应用程序?你支付的云成本是多少?
- 应用性能。应用程序的性能如何?它有多可靠?它符合 SLO 吗?
- 时间和精力。使用多少人员来配置和部署应用程序,需要多长时间?
Kubernetes 铁三角
就像项目管理三角一样,你需要权衡取舍。
想要降低运行应用程序所涉及的云成本吗?如果是,你要么需要牺牲应用程序的性能,要么期望你的团队花费更多时间花在对应用程序进行试错调整上,以使其更高效地运行。
希望提高应用程序性能?无论是在云成本上,还是在你的团队寻找合适的应用程序设置以最大限度地提高性能方面,你都会付出更多的代价。
你是否希望你的团队在部署之前花更少的时间测试和配置你的应用程序?然后,你可以期望以更低的云成本拥有更高的应用程序性能。
打破 Kubernetes 铁三角
应用程序的总成本,不仅包括云支出,还包括你团队的部署时间,以及不合格的应用程序性能对你的业务造成的成本。
事实证明,可以通过利用人工智能 (AI) 和自动化来打破 Kubernetes 铁三角。
由于Kubernetes的特性,人工智能可以很好地减低它的部署和维护的复杂性。每次部署应用程序时,都必须做出多项资源决策。这包括容器级别的Kubernetes 资源决策:CPU 和内存请求和限制以及副本。
然后,结合构成你的应用程序的容器数量,然后添加特定于应用程序的配置设置,例如 JVM 堆大小、垃圾收集等,你就可以快速做出许多容量规划的决定。
这些设置都会影响在生产环境中运行应用程序的成本,以及应用程序的性能和稳定性。
作为一个应用程序的维护人员,你所能做的就是利用你的经验,对最佳设置做出最佳猜测,部署你的应用程序并看看会发生什么。如果你的云成本太高、利用率太低或性能达不到要求。然后你再试一次。
但是有时,可能会有数千种配置的组合。找到能够以尽可能低的成本获得合适性能水平的产品,就像大海捞针一样。但是人工智能,或者更具体地说是机器学习,非常适合解决这种类型的问题。机器学习可以以比人类更有效的方式进行这种“试错”。
机器学习还允许自动选择最佳配置,因此你的工程师不必花费数小时、数天或数周的时间进行尝试、调整和故障排除。
回到铁三角
使用机器学习和自动化后,你现在可以设想一个世界:
- 你可以找到最大限度降低成本而不影响性能的应用配置。
- 你可以找到确保应用程序性能达到或超过 SLO 的配置,而无需花费过多的费用。
- 你可以找到这种最佳配置,而你的工程师无需在 Kubernetes 的复杂配置组合中花费数天时间。
如上图,三角形内的区域代表运行应用程序的总成本。我们现在所做的是最小化三角形的面积,同时确保仍然实现我们的业务目标。
如何应用这些原则
要在你自己的环境中应用这些原则,你可以根据FinOps 生命周期采取以下步骤。
原文链接: https://thenewstack.io/break-the-kubernetes-iron-triangle-by-optimizing-your-apps/