本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解您的 Amazon EKS 成本
概述
要有效监控 Kubernetes 部署的成本,需要从整体角度进行考量。唯一固定且已知的成本是 Amazon Elastic Kubernetes Service(Amazon EKS)控制面板的成本。其中包括构成部署的所有其他组件,从计算和存储到网络,其数量根据您的应用程序需求而定。
您可以使用 Kubecost
成本优势
Kubecost 提供报告和控制面板,用于可视化您的 Amazon EKS 部署成本。它使您能够从集群向下钻取到各个组件,例如控制器、服务、节点、容器组(pod)和卷。这使您可以全面了解在 Amazon EKS 环境中运行的应用程序。通过启用此可见性,您可以按照 Kubecost 建议采取行动,或者精细地查看每个应用程序的成本。正确调整 Amazon EKS 节点组的大小与标准 EC2 实例一样可以节省开支。如果您可以调整容器和节点的大小,则可以从运行容器所需的实例大小和 auto Scaling 组中所需的 EC2 实例数量中消除计算膨胀。
成本优化建议
要利用 KubeCost,我们建议您执行以下操作:
-
将 Kubecost 部署到您的环境中
-
获取 Windows 应用程序的详细成本明细
-
调整集群节点
-
调整容器请求
-
管理未充分利用的节点
-
补救放弃的工作负载
-
根据建议采取行动
-
更新自行管理的节点
将 Kubecost 部署到您的环境中
亚马逊 EKS Finhack 研讨
要使用 Helm
获取 Windows 应用程序的详细成本明细
尽管使用 Amazon EC2 Spot 实例
要获取 Windows 应用程序的详细成本明细,请登录 Kubecost
调整集群节点
在 Kubecost
举一个例子,Kubecost报告集群在 vCPU 和 RAM 方面都被过度预调配。下表显示了 Kubecost 的详细信息和建议。
| Current | 建议:简单 | 建议:复杂 | |
|---|---|---|---|
| 总数 | 每月 3462.57 美元 | 每月 137.24 美元 | 每月 303.68 美元 |
| 节点计数 | 4 | 5 | 4 |
| CPU | 74 VCPUs | 10 VCPUs | 8 VCPUs |
| RAM | 152 GB | 20GB | 18 GB |
| 实例明细 | 2 个 c5.xlarge + 外加 2 个 | 5 个 t3a.medium | 2 个 c5.xlarge + 外加 1 个 |
正如 Kubecost 博客文章 Find an optimal set of nodes for a Kubernetes cluster
如果您使用的是非 eksctl
调整容器请求
在 Kubecost
举个例子,假设 Kubecost 计算出您的某些容器组(pod)在 CPU 和 RAM(内存)方面被过度预调配。然后,Kubecost 建议您调整到新的 CPU 和 RAM 值,以实现其预计的每月节省。要更改 CPU 和 RAM 值,您必须更新部署清单
管理未充分利用的节点
在 Kubecost
举一个例子,页面显示集群中的一个节点在 CPU 和 RAM(内存)方面未充分利用,因此可能会耗尽、终止或调整大小。选择未通过节点和容器组(pod)检查的节点可让您更详细了解为什么它们无法被耗尽。
补救放弃的工作负载
在 Kubecost
在仔细确认一个或多个容器组(pod)已废弃后,您可以通过缩减副本数量、删除部署、调整其大小以消耗更少的资源或通知应用程序所有者您认为部署已放弃来节省成本。
根据建议采取行动
在调整集群节点部分中,Kubecost 分析了集群中 Worker 节点的使用情况,并就如何调整节点以降低成本提出了建议。以下两种类型的节点组可与 Amazon EKS 一起使用:自行管理和托管式。
更新自行管理的节点
有关更新自行管理节点的信息,请参阅 Amazon EKS 文档中的自行管理的节点更新。它指出,使用 eksctl 创建的节点组无法更新,且必须将其迁移到具有新配置的新节点组。
举个例子,假设你有一个名为 ng-windows-m5-2xlarge(它使用 m5.2xlarge EC2 实例)的 Windows 节点组,并且你想将这些 Pod 迁移到一个名为 ng-windows-t3-large(该节点组由 t3. EC2 large 实例支持以节省成本)的新节点组。
要在使用由 eksctl 部署的节点组时迁移到新的节点组,请执行以下操作:
-
要查找容器组(pod)当前所在的节点,请运行
kubectl describe pod <pod_name> -n <namespace>命令。 -
运行
kubectl describe node <node_name>命令。输出显示该节点正在一个 m5.2xlarge 实例上运行。它还与节点组名称 (ng-windows-m5-2xlarge) 匹配。 -
要将部署更改为使用节点组
ng-windows-t3-large,请删除节点组ng-windows-m5-2xlarge并运行kubectl describe svc,deploy,pod -n windows。由于节点组已删除,部署将立即开始重新部署。注意
删除节点组后,服务将停机。
-
在几分钟后再次运行
kubectl describe svc,deploy,pod -n windows命令。输出显示容器组(pod)都再次处于正在运行状态。 -
要显示容器组(pod)现在正在节点组
ng-windows-t3-large上运行,请再次运行kubectl describe pod <pod_name> -n <namespace>和kubectl describe node <node_name>命令。
其他调整大小方法
此方法适用于自行管理或托管式节点组的任意组合。Seamlessly migrate workloads from EKS self-managed node group to EKS-managed node groups
后续步骤
Kubecost 可轻松地可视化 Amazon EKS 环境的成本。Kubecost与Kubernetes的深度集成 AWS APIs 可以帮助你找到潜在的成本节约。您可以在 Kubecost 的节省控制面板中查看这些建议。Kubecost 还可以通过集群控制器功能
我们建议您在 AWS 容器博客中查看 step-by-step部署情况 AWS ,Kubecost 合作为 EKS 客户提供成本监控
其他资源
-
Amazon EKS Workshop
(Amazon EKS 研讨会) -
亚马逊 EKS Finhack AWS 研讨会
(工作室工作室) -
Windows 容器已开启 AWS
(工作AWS 室工作室)