全部產品
Search
文件中心

Container Service for Kubernetes:通過Allocation API擷取成本資料

更新時間:Dec 28, 2024

您可以通過Allocation API查詢業務分攤到的叢集賬單費用,用於財務治理周期內的業務對賬。

前提條件

已參見通過API擷取成本資料概述的前提條件章節完成準備工作。

請求與返回參數

請求文法

GET /v2/allocation

請求參數

欄位

類型

是否必選

描述

window

string

查詢的期間。由於成本資料需要結合雲產品賬單資料來輸出,所以最小期間為24h。接受以下幾種格式的輸入:

  • 關鍵詞:例如“week”、“month”、“yesterday”、“lastweek”、“lastmonth”。

  • 期間:例如“24h”、“7d”。

  • RFC3339日期:逗號分隔的RFC3339格式的日期對,例如“2024-03-26T00:00:00Z,2024-03-27T00:00:00Z”。

  • Unix時間戳記:逗號分隔的Unix時間戳記(秒)對,例如“1711382400,1711468800”。

filter

string

對指定資源類別進行過濾。支援的類別包括:

  • namespace

  • controllerName(例如csi-plugin、node-exporter

    等)

  • controllerKind(例如ReplicaSet、DaemonSet、Job等)

  • pod

  • label(例如[app]:"nginx"

同一個類別支援指定多個過濾項,使用英文半形逗號(,)分隔,例如namespace:"default","kube-system"

同時,支援多欄位組合過濾,使用+分隔,例如namespace:"default"+label[app]:"nginx"

step

string

對返回結果按時間段切分為多個成本集,step描述單個成本集的期間,例如“1d”、“1w”。如果未指定,預設為window的時間範圍。

說明

成本集指一個時間段內Kubernetes對象成本的集合,例如一個Pod在期間內的成本集合。

aggregate

string

對返回結果按照不同維度進行彙總。支援的類別包括:

  • namespace

  • controller

  • controllerKind

  • label:<name>

  • node

idle

boolean

是否展示或處理閑置成本。預設為true。

shareIdle

boolean

是否將閑置成本分攤到各個資源。預設為false。

shareSplit

string

閑置分攤策略。支援的類別包括:

  • weighted(預設值)

  • even

idleByNode

boolean

是否將閑置成本按節點維度彙總。僅在aggregate參數設定為node且shareIdle參數為false時生效。預設值為 false。

targetType

string

成本分攤的目標類型。預設分攤叢集所有關聯資源的費用。

  • cluster(預設值)

  • node

format

string

成本匯出格式。支援的類別包括:

  • json(預設值)

  • csv

返回參數

名稱

類型

描述

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

分攤叢集總賬單的成本。

costRatio

float

成本佔比。描述目前成本占叢集總成本的比例。

customCost

float

自訂成本。

擷取成本資料

本小節使用curl命令訪問Kubernetes API。具體操作,請參見使用Kubernetes API

樣本:擷取某個DsaemonSet昨天分攤叢集賬單的費用

擷取命令

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/allocation" | jq .

返回樣本(JSON格式)

展開查看返回樣本

{
  "data": [
    {
      "kube-system/terway-eniip-88286": {
        "name": "kube-system/terway-eniip-88286",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-88286"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 65815511.039,
        "cost": 4.497,
        "costRatio": 0.016,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-j8c87": {
        "name": "kube-system/terway-eniip-j8c87",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-j8c87"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 186293944.32,
        "cost": 6.504,
        "costRatio": 0.023,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-xjsr8": {
        "name": "kube-system/terway-eniip-xjsr8",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-xjsr8"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 53661380.923,
        "cost": 2.337,
        "costRatio": 0.008,
        "customCost": 0.505
      }
    }
  ]
}