全部產品
Search
文件中心

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

更新時間:Jul 23, 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

  • controllerKind (replicaset、daemonSet、job等)

  • pod

  • label

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

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

step

string

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

說明

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

aggregate

string

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

  • namespace

  • controller

  • controllerKind

format

string

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

  • json(預設值)

  • csv

返回參數

名稱

類型

描述

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

分攤叢集總賬單的成本。

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
      }
    }
  ]
}