帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
Amazon EKS 支持 Kubecost,您可以使用该功能监控按 Kubernetes 资源 [包括容器组(pod)、节点、命名空间和标签] 细分的成本。本主题将介绍如何安装 Kubecost 和访问 Kubecost 控制面板。
Amazon EKS 提供 AWS 优化版 Kubecost 捆绑包,以便了解集群成本。您可以使用现有的 AWS 支持协议获取支持。有关 Kubecost 可用版本的更多信息,请参阅了解有关 Kubecost 的更多信息。
作为 Kubernetes 平台管理员和财务主管,您可以使用 Kubecost 可视化 Amazon EKS 费用明细、分配成本以及向应用程序团队等组织部门退款。您可以根据内部团队和业务部门的实际 AWS 账单为其提供透明、准确的成本数据。此外,您还可以根据他们的基础设施环境及其集群内的使用模式获得定制的成本优化建议。
注意
Kubecost v2 引入了几项重要的新功能。了解有关 Kubecost v2 的更多信息。
有关 Kubecost 的更多信息,请参阅 Kubecost
使用 Amazon EKS 插件安装 Kubecost
注意
Kubecost 可作为 Amazon EKS 附加组件进行安装,使用 Amazon EKS 优化的 Kubecost 捆绑包,无需支付额外费用即可享受其他功能。有关更多信息,请参阅 Kubecost v2。
Amazon EKS 插件可降低升级 Kubecost 和管理许可证的复杂性。EKS 插件已与 AWS Marketplace 集成。
-
确定集群的名称和区域。验证您已登录到 AWS CLI 并且具有管理 EKS 所需的充分权限。
-
创建 Kubecost 插件。
aws eks create-addon --addon-name kubecost_kubecost --cluster-name $YOUR_CLUSTER_NAME --region $AWS_REGION
了解如何移除 EKS 插件,例如 Kubecost。
使用 Helm 安装 Kubecost
-
现有 Amazon EKS 集群。要部署一个角色,请参阅开始使用 Amazon EKS。集群必须具有 Amazon EC2 节点,因为您无法在 Fargate 节点上运行 Kubecost。
-
您的设备或 AWS CloudShell 上安装了
kubectl
命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为1.29
,则可以将kubectl
的1.28
、1.29
或1.30
版本与之配合使用。要安装或升级kubectl
,请参阅 设置 kubectl 和 eksctl。 -
您的设备或 AWS CloudShell 上配置了 3.9.0 版或更高版本的 Helm。要安装或更新 Helm,请参阅 使用 Helm 在 Amazon EKS 上部署应用程序。
-
如果您的集群是
1.23
或更高版本,您必须在集群上安装使用 Amazon EBS 存储 Kubernetes 卷。-
确定要安装的 Kubecost 版本。您可以在 Amazon ECR Public Gallery 中的 kubecost/cost-analyzer
上查看可用的版本。有关 Kubecost 版本与 Amazon EKS 的兼容性的更多信息,请参阅 Kubecost 文档中的 Environment Requirements 。 -
使用以下命令安装 Kubecost。请将
kubecost-version
替换为从 ECR 中检索到的值,例如1.108.1
。helm upgrade -i kubecost oci://public.ecr.aws/kubecost/cost-analyzer --version kubecost-version \ --namespace kubecost --create-namespace \ -f https://raw.githubusercontent.com/kubecost/cost-analyzer-helm-chart/develop/cost-analyzer/values-eks-cost-monitoring.yaml
Kubecost 会定期发布新版本。您可以使用 helm upgrade
更新您的版本。默认情况下,安装包括本地 Prometheus 服务器和 kube-state-metrics
。您可以按照与 Amazon EKS 成本监控集成中的文档来自定义部署,以使用 Amazon Managed Service for Prometheus。有关您可以配置的所有其他设置的列表,请参阅 GitHub 上的示例配置文件 。 可以使用以下命令从集群中删除 Kubecost。
helm uninstall kubecost --namespace kubecost kubectl delete ns kubecost
-
访问 Kubecost 控制面板
-
确保所需的容器组(pod)正在运行。
kubectl get pods -n kubecost
示例输出如下。
NAME READY STATUS RESTARTS AGE kubecost-cost-analyzer-b9788c99f-5vj5b 2/2 Running 0 3h27m kubecost-kube-state-metrics-99bb8c55b-bn2br 1/1 Running 0 3h27m kubecost-prometheus-server-7d9967bfc8-9c8p7 2/2 Running 0 3h27m
-
在设备上启用端口转发以公开 Kubecost 控制面板。
kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090
您也可以使用 AWS 负载均衡器控制器公开 Kubecost,并使用 Amazon Cognito 进行身份验证、授权和用户管理。有关更多信息,请参阅如何使用应用程序负载均衡器和 Amazon Cognito 对您的 Kubernetes Web 应用程序的用户进行身份验证
。 -
在完成上一步的同一台设备上,打开 Web 浏览器并输入以下地址。
http://localhost:9090
浏览器将显示“Kubecost 概述”页面。Kubecost 可能需要 5-10 分钟来收集指标。您可以查看 Amazon EKS 支出,包括累计的集群成本、关联的 Kubernetes 资产成本和每月汇总支出。
-
要跟踪集群级别的成本,请标记您的 Amazon EKS 资源以进行计费。有关更多信息,请参阅 标记资源以便于计费。
-
成本分配 – 查看过去七天内每个命名空间和其他维度的 Amazon EKS 月度成本和累计成本。这有助于了解应用程序的哪些部分产生 Amazon EKS 支出。
-
资产 – 查看与您的 Amazon EKS 资源关联的 AWS 基础设施资产的成本。
-