如何在15分钟内将亚马逊EKS成本降低一半
高级储蓄
AWS AI 直播!
过度配置是导致团队云账单不断增长的首要原因。但从AWS提供的数百种实例中选择最佳实例并非易事。
你如何才能知道哪些产品能够满足你的性能需求?
幸运的是,市面上有很多解决方案可以帮你做到这一点。
如果你好奇这一切是如何运作的,请跟随我的脚步,看看我是如何在 15 分钟内使用 CAST AI 将 EKS 中容器的运行成本降低了一半的。
太长不看
我首先在 AWS EKS 上部署了一个电商应用(链接在此),该应用使用六个 m5 节点(2 个 vCPU,8 GiB 内存)。然后,我部署了一个 AI 引擎来分析我的应用并提出一些优化建议。最后,我激活了该引擎,并观察系统如何进行自我优化。
初始集群成本为每月414 美元。15 分钟内,通过全自动方式,将节点数从六个减少到三个,集群成本降至207 美元(降低了 50%)。5 分钟后,通过使用竞价型实例,集群成本进一步降至每月138 美元(降低了 66%)。
获取免费的CAST AI 节省报告,了解您可能节省多少成本。这是您开启云成本优化之旅的最佳起点。
步骤 1:部署我的应用程序并运行储蓄报告
我已将应用程序部署到 EKS 的 6 个节点上。以下是部署前的样子——所有节点都是空的:
集群是通过 eksctl 创建的:
eksctl create cluster --name boutique-blog-lg -N 6 --instance-types m5.large --managed --region us-east-2 |
部署完成后,绿色矩形框代表的是 pod:
我正在使用 kube-ops-view,这是一个很有用的开源项目,可以用来可视化 pod。
请注意,在 Kubernetes 中,应用程序的 Pod(也称为容器)默认情况下会均匀分布在所有节点上。Kubernetes 是一个公平的编排引擎。CPU 使用率在 40% 到 50% 之间。
注意:所有 EKS 自动扩缩容功能均已故意禁用,因为 CAST AI 将替代 EKS 集群自动扩缩容。
现在是时候将我的 EKS 集群连接到 CAST AI 了。我在 https://cast.ai 创建了一个免费帐户,并选择了“连接您的集群”选项。
点击“连接集群”:
我已成功复制脚本并在终端上运行(我使用的是 Lens,另一个用于此目的的免费工具)。
laurent@laurents-MacBook-Pro ~ % curl -H "Authorization: Token "https://api.cast.ai/v1/agent.yaml?provider=eks" | kubectl apply -f - |
CAST AI 代理以只读模式扫描了我的 EKS 集群,并生成了这份节省报告:
如果我把六个 m5.large 换成 CAST AI 推荐的三个 c5a.large,我的账单就能减少近 60%。听起来不错!
使用竞价型实例,我甚至可以节省更多成本(66.5%)。
步骤 2:启动成本优化
要开始进行成本优化,我需要将我的 AWS 访问密钥 ID 和秘密访问密钥添加到平台。
获取访问密钥非常简单,只需运行以下脚本即可:
步骤 3: 启用策略
- CPU策略:我告诉引擎永远不要超过我的预算。我将其设置为最多200个CPU。
- 节点自动扩缩容:每当我有未调度的 Pod 时,CAST AI 都会智能地选择节点,首先选择 Spot 实例(如果未调度的 Pod 适合 Spot 实例)或按需实例。
- 节点删除 + Evictor :Evictor 是一个后台进程,它通过打包 Pod 将集群持续缩减到最少节点数。一旦节点为空,它就会被自动删除。
Evictor 是 CAST AI 开发的一款工具,它会持续查找系统配置中的低效之处,并帮助用户尽快实现成本最大化。运行以下命令即可激活 Evictor:
这就是 Evictor 的实际工作画面:
- 其中一个节点( 如下红色 所示)被确定为待驱逐节点。
- Evictor 会自动将 pod 移动到其他节点,就像“装箱”一样。
- 当节点变为空时,它将从集群中删除。
- 返回步骤 1。
删除一个节点:
以下是驱逐者日志:
time="2021-06-14T16:08:27Z" level=debug msg="will try to evict node \"ip-192-168-66-41.us-east-2.compute.internal\"" |
现在第二个和第三个节点被移除——还剩下 3 个节点:
大约 10 分钟后,Evictor 删除了 3 个节点,并保留了 3 个节点继续运行。请注意,CPU 使用率现在已降至健康的 80%。
该集群现在的成本为每月 207.36 美元,是最初每月 414 美元成本的一半。
我实现了 预期节省目标的 80% 。以下是我在 CAST AI 控制面板中看到的内容:
高级储蓄
步骤 4(可选):将我的应用程序迁移到新的优化节点
步骤 1、2 和 3 完全自动化。CAST AI 通过消除浪费和过度配置来逐步缩减集群规模。它通过逐个回收 Pod 和清空节点来实现这一点。从那时起,集群即被优化,Evictor 将持续寻找进一步的优化机会。
步骤 4 是一个高级可选步骤,CAST AI 会主动将当前节点替换为更优化的节点,例如竞价型实例。其原理相当简单:CAST AI 会隔离集群,释放节点资源,并将其替换为更优化的节点。
节点被隔离:
前两个节点的数据被清空,AI引擎会为这些节点选择最合适的实例类型。以下是我在CAST AI控制面板中看到的内容:
如您所见,我的集群现在只有两个节点, 每月费用为 138 美元。很难想象我最初每月 EKS 账单竟然高达 414.72 美元!
概括
从非优化配置升级到完全优化配置简直轻而易举。CAST AI 分析了我的配置,找到了节省成本的机会,并在 15 分钟内迅速优化了我的集群。我的 EKS 账单在 15 分钟内减半,从 414 美元降至 207 美元。
然后,我激活了高级节省功能,要求 CAST AI 将节点替换为更优化的节点,从而实现了进一步的节省,最终 账单金额为138 美元 。
运行免费的 CAST AI 节省报告 ,即可查看您可能节省多少成本。这是您开启云成本优化之旅的最佳起点。
文章来源:https://dev.to/castai/how-to-reduce-your-amazon-eks-costs-by-half-in-15-minutes-3h7f


