您可以通過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 |
否 |
對返回結果按照不同維度進行彙總。支援的類別包括:
|
|
idle |
boolean |
否 |
是否展示或處理閑置成本。預設為true。 |
|
shareIdle |
boolean |
否 |
是否將閑置成本分攤到各個資源。預設為false。 |
|
shareSplit |
string |
否 |
閑置分攤策略。支援的類別包括:
|
|
idleByNode |
boolean |
否 |
是否將閑置成本按節點維度彙總。僅在aggregate參數設定為node且shareIdle參數為false時生效。預設值為 false。 |
|
format |
string |
否 |
成本匯出格式。支援的類別包括:
|
返回參數
|
名稱 |
類型 |
描述 |
|
properties |
object |
描述關聯Kubernetes對象的屬性。 |
|
pod |
string |
Pod名稱。 |
|
node |
string |
節點名稱。 |
|
namespace |
string |
命名空間。 |
|
controllerKind |
string |
控制器類型。 |
|
controller |
string |
控制器名稱。 |
|
providerID |
string |
節點對應ECS執行個體ID。 |
|
labels |
map[string]string |
Pod標籤。 說明
Prometheus僅支援在label中使用底線“_”。如果您的label中包含“-”、“.”等符號,Prometheus會將其轉換為底線“_”。 |
|
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格式)
樣本三:擷取所有Label Key為app的應用成本,成本集按Label Value進行彙總
擷取命令
curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
-d 'window=2h' \
-d 'aggregate=label:app' \
"$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .
返回樣本(JSON格式)
相關文檔
Allocation API結合賬單資料,提供了分攤後的賬單費用,可用於對賬,請參見通過Allocation API擷取。