安装 Kubecost 并访问控制面板 - Amazon EKS

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

安装 Kubecost 并访问控制面板

Amazon EKS 支持 Kubecost,您可以使用该功能监控按 Kubernetes 资源(包括 Pods、节点、命名空间和标签)细分的成本。本主题介绍如何安装 Kubecost 和访问 Kubecost 控制面板。

Amazon EKS 提供 AWS 优化的 Kubecost 捆绑包,以实现集群成本可视化。您可以使用现有的 AWS 支持协议获取支持。有关 Kubecost 的可用版本的更多信息,请参阅 了解有关 Kubecost 的更多信息

作为 Kubernetes 平台管理员和财务主管,您可以使用 Kubecost 可视化 Amazon EKS 费用明细、分配成本以及向应用程序团队等组织部门退款。您可以根据内部团队和业务部门的实际 AWS 账单为其提供透明、准确的成本数据。此外,您还可以根据他们的基础设施环境及其集群内的使用模式获得定制的成本优化建议。

注意

Kubecost v2 引入了几项重要的新功能。了解有关 Kubecost v2 的更多信息。

有关 Kubecost 的详细信息,请参阅 Kubecost 文档。

使用 Helm 安装 Kubecost

先决条件
  • 现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。集群必须具有 Amazon EC2 节点,因为您无法在 Fargate 节点上运行 Kubecost。

  • 您的设备或 AWS CloudShell 上安装了 kubectl 命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为 1.30,则可以将 kubectl1.291.301.31 版本与之配合使用。要安装或升级 kubectl,请参阅 设置 kubectl 和 eksctl

  • 您的设备或 AWS CloudShell 上配置了 3.9.0 版或更高版本的 Helm。要安装或更新 Helm,请参阅 使用 Helm 在 Amazon EKS 上部署应用程序

  • 如果您的集群是 1.23 版或更高版本,您必须在集群上安装 使用 Amazon EBS 存储 Kubernetes 卷

  1. 确定要安装的 Kubecost 版本。您可以在 Amazon ECR Public Gallery 中的 kubecost/cost-analyzer 上查看可用的版本。要详细了解 Kubecost 版本与 Amazon EKS 的兼容性,请参阅 Kubecost 文档中的 Environment Requirements

  2. 使用以下命令安装 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

使用 Amazon EKS 插件安装 Kubecost

Amazon EKS 插件可降低升级 Kubecost 和管理许可证的复杂性。EKS 插件已与 AWS Marketplace 集成。

  1. 在 AWS Marketplace 控制台中查看 Kubecost 并订阅。

  2. 确定集群的名称和区域。验证您已登录到 AWS CLI 并且具有管理 EKS 所需的充分权限。

  3. 创建 Kubecost 插件。

    aws eks create-addon --addon-name kubecost_kubecost --cluster-name $YOUR_CLUSTER_NAME --region $AWS_REGION

了解如何移除 EKS 插件,例如 Kubecost。

访问 Kubecost 控制面板

  1. 确保所需的 Pods 正在运行。

    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
  2. 在您的设备上,启用端口转发以公开 Kubecost 控制面板。

    kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090

    或者,您可以使用 AWS Load Balancer Controller 公开 Kubecost 并将 Amazon Cognito 用于身份验证、授权和用户管理。有关更多信息,请参阅如何使用应用程序负载均衡器和 Amazon Cognito 为您的 Kubernetes Web 应用程序用户进行身份验证

  3. 在完成上一步的同一台设备上,打开 Web 浏览器并输入以下地址。

    http://localhost:9090

    浏览器中将显示 Kubecost 概述页面。Kubecost 收集指标可能需要 5-10 分钟。您可以查看 Amazon EKS 支出,包括累计的集群成本、关联的 Kubernetes 资产成本和每月聚合支出。

    Kubecost 控制面板
  4. 要跟踪集群级别的成本,请标记您的 Amazon EKS 资源以进行计费。有关更多信息,请参阅 标记资源以便于计费

在控制面板的左侧窗格中,您还可以选择以下信息进行查看:
  • 成本分配 – 查看过去七天内每个命名空间和其他维度的 Amazon EKS 月度成本和累计成本。这有助于了解应用程序的哪些部分产生 Amazon EKS 支出。

  • 资产 – 查看与您的 Amazon EKS 资源关联的 AWS 基础设施资产的成本。