您可以通過Cost V2 API查詢叢集工作負載的即時估算成本。Cost V2 API支援設定更為靈活的時間範圍,對Pod、命令空間、Label、Controller(Controller名稱,例如csi-plugin等)、Controller Kind(Controller類型,例如ReplicaSet、DaemonSet、Job等)等維度資源進行過濾查詢,可用於即時成本趨勢分析。
前提條件
已參見通過API擷取成本資料概述的前提條件章節完成準備工作。
請求和返回參數
請求文法
GET /v2/cost
請求參數
名稱 | 類型 | 是否必選 | 描述 |
window | string | 是 | 查詢的期間。接受以下幾種格式的輸入:
|
filter | string | 否 | 對指定資源類別進行過濾。支援的類別包括:
同一個類別支援指定多個過濾項,使用英文半形逗號(,)分隔,例如 同時,支援多欄位組合過濾,使用 |
step | string | 否 | 對返回結果按時間段切分為多個成本集,step描述單個成本集的期間,例如“1d”、“1w”。如果未指定,預設為 說明 成本集指一個時間段內Kubernetes對象成本的集合,例如一個Pod在期間內的成本集合。 |
aggregate | string | 否 | 對返回結果按照不同維度進行彙總。支援的類別包括:
|
format | string | 否 | 成本匯出格式。支援的類別包括:
|
返回參數
名稱 | 類型 | 描述 |
properties | object | 描述關聯Kubernetes對象的屬性。 |
pod | string | Pod名稱。 |
namespace | string | 命名空間。 |
controllerKind | string | 控制器類型。 |
controller | string | 控制器名稱。 |
start | string | 成本集的開始時間。 |
end | string | 成本集的結束時間。 |
cpuCoreRequestAverage | float | 請求的平均CPU核心數。 |
cpuCoreUsageAverage | float | 使用的平均CPU核心數。 |
ramByteRequestAverage | float | 請求的平均記憶體量。 |
ramByteUsageAverage | float | 使用的平均記憶體量。 |
cost | float | 估算成本。預設成本估算策略為CPU權重100%,自訂資源權重請參見成本估算策略介紹。 |
costRatio | float | 成本佔比。描述目前成本占叢集總成本的比例。 |
customCost | float | 自訂成本。 |
(可選)步驟一:自訂資源成本權重
Cost V2 API預設使用CPU權重100%的成本估算策略。如需自訂資源成本權重,請參見以下步驟。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Helm頁面的操作列,單擊ack-alibaba-cloud-metrics-adapter對應的更新。
在YAML中,修改
AlibabaCloudMetricsAdapter.costWeights
(預設值為:{"cpu": "1.0", "memory": "0.0"}),然後單擊確定。關於權重混合(CPU-記憶體混合)資源估算策略,請參見成本估算策略介紹。
步驟二:擷取成本資料
本小節使用curl命令訪問Kubernetes API。具體操作,請參見使用Kubernetes API。
樣本一:擷取某個DaemonSet昨天的估算成本明細
擷取命令
curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
-d 'window=yesterday' \
-d 'filter=namespace:"kube-system"+controllerKind:"DaemonSet"+label[app]:"terway-eniip"' \
"$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .
返回樣本(JSON格式)
樣本二:擷取某個Pod三小時內的估算成本明細,成本集按小時維度拆分
擷取命令
curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
-d 'window=2024-03-24T00:00:00Z,2024-03-24T03:00:00Z' \
-d 'step=1h' \
-d 'filter=namespace:"kube-system"+pod:"terway-eniip-kz68n"' \
"$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .
返回樣本(JSON格式)
相關文檔
Allocation API結合賬單資料,提供了分攤後的賬單費用,可用於對賬,請參見通過Allocation API擷取。