你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Kubernetes 服务成本分析

Azure Kubernetes 服务 (AKS) 群集依赖于 Azure 资源,例如虚拟机、虚拟磁盘、负载均衡器和公共 IP 地址。 多个应用程序可以使用这些资源,这些资源可能由组织内的不同团队维护。 这些应用程序的资源消耗模式通常有所不同,因此它们在群集资源总成本中的占比也可能有所不同。 某些应用程序还可以跨多个群集占用空间,这在执行成本归因和成本管理时可能会带来挑战。

以前,Microsoft 成本管理 (MCM) 在群集资源组下聚合群集资源消耗。 可以使用 MCM 来分析成本,但存在一些挑战:

  • 没有 Azure 原生功能可以比群集更精细地显示群集资源使用情况。 计算(包括 CPU 核心和内存)、存储和网络等离散类别没有细分。

  • Azure 内不具备可以区分成本类型(例如单个应用程序成本和共享成本)的原生功能。 MCM 报告资源成本,但无法深入了解用于运行单个应用程序的资源成本、为群集所需的系统进程保留的资源成本,或与群集关联的空闲成本。

  • 没有 Azure 原生机制可以分析同一订阅范围内多个群集的成本。

因此,你可能已使用第三方解决方案来收集和分析特定于 Kubernetes 的粒度级别(如命名空间或 Pod)的资源消耗和成本。 但是,第三方解决方案需要为每个 AKS 群集进行部署、微调和维护。 在某些情况下,你甚至需要支付高级功能费用,从而增加群集的总拥有成本。

为了应对这一挑战,AKS 已与 MCM 集成,除了 Azure 计算、网络和存储类别外,还提供范围到 Kubernetes 构造的详细成本探究(例如群集和命名空间)。

AKS 成本分析加载项建立在 OpenCost(一个开源 Cloud Native Computing Foundation 沙盒项目)之上,用于收集使用情况数据。 我们会用 Azure 发票数据来与成本分析对账。 处理后的数据直接显示在 MCM 成本分析门户体验中。

先决条件和限制

  • 群集必须是 Standard 层或 Premium 层,而不是 Free 层。

  • 若要查看成本分析信息,必须在托管群集的订阅中具有以下角色之一:所有者、参与者、读者、成本管理参与者或成本管理读者。

  • 启用成本分析后,如果不首先禁用成本分析,就无法将群集降级到 Free 层。

  • 群集必须在配置了 Microsoft Entra 工作负载 ID 的情况下进行部署。

  • Kubernetes 成本视图仅适用于以下 Microsoft Azure 优惠类型。 有关优惠类型的更多信息,请参阅支持的 Microsoft Azure 优惠

    • 企业协议
    • Microsoft 客户协议
  • 访问 Azure API,包括 Azure 资源管理器 (ARM) API。 有关所需的完全限定域名 (FQDN) 的列表,请参阅 AKS 成本分析所需的 FQDN

  • 目前不支持虚拟节点。

  • 目前不支持 AKS Automatic。

  • 如果使用 Azure CLI,则必须安装版本 2.61.0 或更高版本。

在 AKS 群集上启用成本分析

可以在以下操作之一中使用 --enable-cost-analysis 标志启用成本分析:

  • 创建 Standard 层或 Premium 层 AKS 群集。

  • 更新已在 Standard 层或 Premium 层中的 AKS 群集。

  • Free 群集升级到 StandardPremium

  • Standard 群集升级到 Premium

  • Premium 群集降级到 Standard 层。

以下命令将在启用成本分析时在 Standard 层中创建新的 AKS 群集:

az aks create --resource-group <resource-group> --name <cluster-name> --location <location> --enable-managed-identity --generate-ssh-keys --tier standard --enable-cost-analysis

以下示例将更新 Standard 层中的现有 AKS 群集以启用成本分析:

az aks update --resource-group <resource-group> --name <cluster-name> --enable-cost-analysis

警告

AKS 成本分析加载项内存使用量取决于部署的容器数。 每个容器的内存消耗大致为 200 MB + 0.5 MB。 当前内存限制设置为 4 GB,每个群集大约支持 7000 个容器。 这些估计值可能会根据各种因素增加或减少,还可能会发生变化。

如果遇到问题,例如加载项 Pod 处于 OOMKilled 状态或停留在 Pending 状态,请参阅 AKS 成本分析加载项问题故障排除指南。

禁用成本分析

随时可以使用 az aks update 来禁用成本分析。

az aks update --name myAKSCluster --resource-group myResourceGroup --disable-cost-analysis

注意

如果要在启用成本分析时将群集从 StandardPremium 层降级到 Free 层,则必须首先显式禁用成本分析。

查看成本数据

可以在 Azure 门户中查看成本分配数据。 若要详细了解如何导览成本分析 UI 视图,请参阅成本管理文档

成本定义

在 Kubernetes 命名空间和资产视图中,你将看到以下费用:

  • 空闲费用:表示未由任何工作负载使用的可用资源容量的成本。
  • 服务费用:表示与运行时间 SLA、Microsoft Defender for Containers 等服务相关的费用。
  • 系统费用:表示 AKS 在每个节点上为运行集群所需的系统进程(包括 kubelet 和容器运行时)预留的容量成本。 了解详细信息
  • 未分配的费用:表示无法分配给命名空间的资源的成本。

注意

完成数据可能需要一天时间。 24 小时后,前一天的成本波动将趋于稳定。

故障排除

请参阅以下指南以排查 AKS 成本分析附加产品问题

了解详细信息

可见性是成本管理的一个要素。 请参阅优化 Azure Kubernetes 服务 (AKS) 中的成本,了解有关如何控制 Kubernetes 成本的其他最佳实践。