成本洞察功能可以協助企業IT成本管理人員從多維度了解集群資源使用量及成本分布,提供成本節約建議。本文介紹如何開啟和關閉成本洞察功能。
前提條件
確保Kubernetes集群的版本為1.18.8及以上,否則請升級集群。具體操作,請參見手動升級集群。
已開啟阿里云Prometheus。具體操作,請參見步驟一:開啟阿里云Prometheus監控。
成本洞察費用說明
成本洞察會產生以賬單、云資源價格等作為數據的自定義指標,上報至阿里云Prometheus中,因此會產生阿里云Prometheus自定義指標的額外費用。具體費用以阿里云Prometheus規格為準。關于阿里云Prometheus監控的詳細計費說明,請參見計費概述。
成本洞察數據量與集群相關云資源每天賬單數量、集群節點規模相關。您可以在ARMS Prometheus控制臺查詢集群成本洞察數據量。
參照下文開啟成本洞察功能后,您可以登錄ARMS控制臺,在控制臺左側導航欄選擇 ,在右側頁面左上角根據集群名稱選擇實例,頁面下劃,在頁面底部24h Top 10 自定義指標上報量(Job)中查看alibaba-cloud-cost-exporter的上報量,即為ACK集群每天成本洞察數據量。
費用標簽功能默認對ACK成本洞察的數據進行過濾,您需在費用與成本開啟費用標簽功能,并在費用標簽功能中開啟ack.aliyun.com
、ack.alibabacloud.com/nodepool-id
兩個標簽,避免ACK成本洞察功能無法獲取賬單、節點池分析數據。
開啟成本洞察功能
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
授權AliyunCSManagedCostRole角色并安裝ack-cost-exporter組件,開啟成功洞察。
授予訪問ACK集群賬單數據的權限
如果您使用的是托管版集群,系統會自動授予相關權限。完成授權后,系統會創建AliyunCSManagedCostRole角色,阿里云Prometheus使用該角色訪問您在費用與成本的賬單數據并進行成本洞察。
您也單擊云資源訪問授權鏈接,在云資源訪問授權頁面,單擊同意授權。
在成本洞察頁面,單擊KubernetesWorkerRole-***。
在RAM角色頁面的權限管理頁簽,單擊權限策略列下的k8sWorkerRole****。
在權限策略詳情頁面的策略內容頁簽下,單擊修改策略內容。
在腳本編輯框中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" }
說明多個策略內容需要用英文半角逗號(,)分隔。
安裝組件
按照頁面指引,安裝ack-cost-exporter組件。安裝完成后,頁面自動跳轉至成本洞察頁面。
關閉成本洞察功能
如無需使用成本洞察功能,您可以卸載ack-cost-exporter組件,關閉該功能。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在組件管理頁面找到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