启用成本洞察功能

成本洞察功能可以协助企业IT成本管理人员从多维度了解集群资源使用量及成本分布,提供成本节约建议。本文介绍如何开启和关闭成本洞察功能。

前提条件

成本洞察费用说明

成本洞察会产生以账单、云资源价格等作为数据的自定义指标,上报至阿里云Prometheus中,因此会产生阿里云Prometheus自定义指标的额外费用。具体费用以阿里云Prometheus规格为准。关于阿里云Prometheus监控的详细计费说明,请参见计费概述

成本洞察数据量与集群相关云资源每天账单数量、集群节点规模相关。您可以在ARMS Prometheus控制台查询集群成本洞察数据量。

参照下文开启成本洞察功能后,您可以登录ARMS控制台,在控制台左侧导航栏选择Prometheus监控 > 资源消耗,在右侧页面左上角根据集群名称选择实例,页面下划,在页面底部24h Top 10 自定义指标上报量(Job)中查看alibaba-cloud-cost-exporter的上报量,即为ACK集群每天成本洞察数据量。

数据上报量

费用标签功能默认对ACK成本洞察的数据进行过滤,您需在费用与成本开启费用标签功能,并在费用标签功能中开启ack.aliyun.comack.alibabacloud.com/nodepool-id两个标签,避免ACK成本洞察功能无法获取账单、节点池分析数据。

开启成本洞察功能

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择成本套件 > 成本洞察

  3. 授权AliyunCSManagedCostRole角色并安装ack-cost-exporter组件,开启成功洞察。

    1. 授予访问ACK集群账单数据的权限

      • 如果您使用的是托管版集群,系统会自动授予相关权限。完成授权后,系统会创建AliyunCSManagedCostRole角色,阿里云Prometheus使用该角色访问您在费用与成本的账单数据并进行成本洞察。

        您也单击云资源访问授权链接,在云资源访问授权页面,单击同意授权

      • 如果您使用的是专有版集群,请展开按照以下步骤完成授权。

        1. 成本洞察页面,单击KubernetesWorkerRole-***

        2. 在RAM角色页面的权限管理页签,单击权限策略列下的k8sWorkerRole****

        3. 在权限策略详情页面的策略内容页签下,单击修改策略内容

        4. 在脚本编辑框中Statement字段中增加以下授权规则,修改完成后单击编辑基本信息,然后单击确定

                  {
                      "Action": [
                          "bssapi:QueryInstanceBill",
                          "bssapi:DescribeInstanceBill"
                      ],
                      "Resource": "*",
                      "Effect": "Allow"
                  },
                  {
                      "Action": [
                          "ecs:DescribeDisks",
                          "ecs:DescribeSpotPriceHistory",
                          "ecs:DescribeInstances",
                          "ecs:DescribePrice"
                      ],
                      "Resource": "*",
                      "Effect": "Allow"
                  },
                  {
                      "Action": [
                          "eci: DescribeContainerGroupPrice"
                      ],
                      "Resource": "*",
                      "Effect": "Allow"
                  }
          说明

          多个策略内容需要用英文半角逗号(,)分隔。

    2. 安装组件

      按照页面指引,安装ack-cost-exporter组件。安装完成后,页面自动跳转至成本洞察页面。

关闭成本洞察功能

如无需使用成本洞察功能,您可以卸载ack-cost-exporter组件,关闭该功能。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 组件管理页面找到ack-cost-exporter,在卡片单击卸载,然后在卸载组件对话框,单击确定

常见问题

ack-cost-exporter组件安装或卸载失败后如何处理?

  • 当安装ack-cost-exporter组件失败时,请先通过以下命令手动删除ack-cost-exporter组件,然后重新安装ack-cost-exporter组件。关于安装ack-cost-exporter组件的具体操作,请参见管理组件

    kubectl delete deployment ack-cost-exporter -n kube-system
    kubectl delete service alibaba-cloud-price-exporter -n kube-system
    kubectl delete service alibaba-cloud-billing-exporter -n kube-system
    kubectl delete service alibaba-cloud-cost-exporter -n kube-system
    
    kubectl delete ServiceMonitor alibaba-cloud-price-exporter -n kube-system
    kubectl delete ServiceMonitor alibaba-cloud-billing-exporter -n kube-system
    kubectl delete ServiceMonitor alibaba-cloud-cost-exporter -n kube-system
    
    kubectl delete ClusterRoleBinding ack-cost-exporter-cluster-role-binding
    kubectl delete ClusterRoleBinding ack-cost-exporter-cluster-role-binding-v1
    
    kubectl delete ServiceAccount ack-cost-exporter -n kube-system
    kubectl delete ClusterRole ack-cost-exporter-cluster-role
  • 当卸载ack-cost-exporter组件失败时,可以通过以下命令手动删除ack-cost-exporter组件。

    kubectl delete deployment ack-cost-exporter -n kube-system
    kubectl delete service alibaba-cloud-price-exporter -n kube-system
    kubectl delete service alibaba-cloud-billing-exporter -n kube-system
    kubectl delete service alibaba-cloud-cost-exporter -n kube-system
    
    kubectl delete ServiceMonitor alibaba-cloud-price-exporter -n kube-system
    kubectl delete ServiceMonitor alibaba-cloud-billing-exporter -n kube-system
    kubectl delete ServiceMonitor alibaba-cloud-cost-exporter -n kube-system
    
    kubectl delete ClusterRoleBinding ack-cost-exporter-cluster-role-binding
    kubectl delete ClusterRoleBinding ack-cost-exporter-cluster-role-binding-v1
    
    kubectl delete ServiceAccount ack-cost-exporter -n kube-system
    kubectl delete ClusterRole ack-cost-exporter-cluster-role