All Products
Search
Document Center

Container Service for Kubernetes:Kueri data biaya melalui Cost V2 API

Last Updated:Aug 21, 2026

Lakukan kueri estimasi biaya real-time untuk beban kerja kluster melalui Cost V2 API dengan jendela waktu fleksibel dan filter berdasarkan pod, namespace, label, nama controller, atau jenis controller guna menganalisis tren biaya secara real-time.

Prasyarat

Selesaikan penyiapan di Ikhtisar memperoleh data biaya menggunakan API.

Referensi API

Sintaksis permintaan

GET /v2/cost

Parameter permintaan

Parameter

Tipe

Wajib

Deskripsi

window

string

Ya

Rentang waktu untuk dikueri.

  • Format yang didukung:

    • today — hari ini

    • yesterday — hari kemarin

    • week — minggu ini

    • lastweek — minggu lalu

    • month — bulan ini

    • lastmonth — bulan lalu

  • Durasi: 30m (30 menit terakhir), 12h (12 jam terakhir), 7d (7 hari terakhir)

  • Rentang tanggal RFC3339: 2024-03-26T00:00:00Z,2024-03-27T00:00:00Z

  • Rentang timestamp Unix (dalam detik): 1711382400,1711468800

filter

string

Tidak

Filter berdasarkan kategori resource: namespace, controllerName (misalnya, csi-plugin), controllerKind (misalnya, DaemonSet, ReplicaSet, Job), pod, label (misalnya, [app]:"nginx").

Pisahkan beberapa nilai dengan koma: namespace:"default","kube-system".

Gabungkan kategori dengan +: namespace:"default"+label[app]:"nginx".

step

string

Tidak

Interval waktu untuk membagi hasil menjadi beberapa set biaya (misalnya, 1d atau 1w). Jika dihilangkan, seluruh window dikembalikan sebagai satu set biaya.

Catatan

Set biaya berisi data biaya untuk objek Kubernetes (seperti pod) dalam periode waktu tertentu.

aggregate

string

Tidak

Dimensi agregasi. Nilai yang didukung:

  • namespace — di semua namespace kluster

  • controller — per controller individual

  • controllerKind — per tipe controller (misalnya, DaemonSet, ReplicaSet)

  • label:<name> — per kunci label

  • node — per node komputasi

idle

boolean

Tidak

Menentukan apakah akan menyertakan biaya idle. Default: true.

shareIdle

boolean

Tidak

Menentukan apakah akan mendistribusikan biaya idle ke alokasi non-idle. Default: false.

shareSplit

string

Tidak

Kebijakan untuk mengalokasikan biaya idle. Nilai yang valid:

  • weighted (default)

  • even

idleByNode

boolean

Tidak

Menentukan apakah akan mengagregasi biaya idle pada level node sebelum didistribusikan. Hanya berlaku saat aggregate=node dan shareIdle=false. Default: false.

format

string

Tidak

Format output. Nilai yang valid: json (default), csv.

Parameter respons

Parameter

Type

Deskripsi

properties

object

Properti objek Kubernetes.

pod

string

Nama pod.

node

string

Nama node.

namespace

string

Namespace.

controllerKind

string

Jenis controller (misalnya, DaemonSet, ReplicaSet).

controller

string

Nama controller.

providerID

string

ID Instance ECS untuk node tersebut.

labels

map[string]string

Label pod.

Catatan

Prometheus hanya mendukung garis bawah (_) dalam nama label. Tanda hubung (-) dan titik (.) diubah menjadi garis bawah.

start

string

Waktu mulai set biaya.

end

string

Waktu akhir set biaya.

cpuCoreRequestAverage

float

Rata-rata core CPU yang diminta selama periode tersebut.

cpuCoreUsageAverage

float

Rata-rata core CPU yang digunakan selama periode tersebut.

ramByteRequestAverage

float

Rata-rata memori yang diminta selama periode tersebut, dalam byte.

ramByteUsageAverage

float

Rata-rata memori yang digunakan selama periode tersebut, dalam byte.

cost

float

Estimasi biaya untuk periode tersebut. Default: bobot CPU 100%. Lihat Kebijakan estimasi biaya untuk menyesuaikan.

costRatio

float

Persentase dari total biaya kluster (biaya resource / total biaya kluster).

customCost

float

Biaya dari kebijakan estimasi kustom.

(Opsional) Langkah 1: Menyesuaikan bobot biaya resource

Cost V2 API secara default menggunakan bobot CPU 100% ({"cpu": "1.0", "memory": "0.0"}). Untuk pembobotan campuran CPU-memori, perbarui chart Helm ack-alibaba-cloud-metrics-adapter.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Applications > Helm.

  3. Di halaman Helm, temukan ack-alibaba-cloud-metrics-adapter dan klik Update di kolom Actions.

  4. Di file YAML, perbarui parameter AlibabaCloudMetricsAdapter.costWeights, lalu klik OK.

    image

    Lihat Kebijakan estimasi biaya.

Langkah 2: Kueri data biaya

Semua contoh menggunakan curl dengan otentikasi sertifikat klien. Untuk penyiapan, lihat Menggunakan Kubernetes API.

Contoh 1: Kueri biaya DaemonSet kemarin

Filter berdasarkan namespace, jenis controller, dan label untuk mengembalikan data biaya per pod untuk kemarin.

Request

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 .

Contoh respons

Lihat contoh respons

{
  "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.04,
        "cost": 1.622,
        "costRatio": 0.016,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-fqxk8": {
        "name": "kube-system/terway-eniip-fqxk8",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-fqxk8"
        },
        "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": 72787722.24,
        "cost": 1.622,
        "costRatio": 0.016,
        "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": 0.843,
        "costRatio": 0.008,
        "customCost": 0.505
      }
    }
  ]
}

Contoh 2: Kueri biaya pod per jam dalam jendela 3 jam

Gunakan step=1h untuk membagi jendela 3 jam menjadi tiga set biaya per jam.

Request

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 .

Contoh respons

Lihat contoh respons

{
  "data": [
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T00:00:00Z",
        "end": "2024-03-24T01:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63583378.285,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    },
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T01:00:00Z",
        "end": "2024-03-24T02:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63111168,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    },
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T02:00:00Z",
        "end": "2024-03-24T03:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63430656,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    }
  ]
}

Contoh 3: Kueri biaya yang diagregasi berdasarkan label app

Gunakan aggregate=label:app untuk mengelompokkan biaya berdasarkan label app.

Request

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 .

Contoh respons

Lihat contoh respons

{
  "data": [
    {
      "__idle__": {
        "name": "__idle__",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 0,
        "cpuCoreUsageAverage": 0,
        "ramByteRequestAverage": 0,
        "ramByteUsageAverage": 0,
        "cost": 3.8230000000000004,
        "costRatio": 0.6371666666666664,
        "customCost": 0
      },
      "__unallocated__": {
        "name": "__unallocated__",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 1.135,
        "cpuCoreUsageAverage": 0.024,
        "ramByteRequestAverage": 1901068288,
        "ramByteUsageAverage": 646283264,
        "cost": 0.6000000000000001,
        "costRatio": 0.09999999999999999,
        "customCost": 0
      },
      "ack-alibaba-cloud-metrics-adapter": {
        "name": "ack-alibaba-cloud-metrics-adapter",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 0.24,
        "cpuCoreUsageAverage": 0.004,
        "ramByteRequestAverage": 482344960,
        "ramByteUsageAverage": 96964608,
        "cost": 0.064,
        "costRatio": 0.010666666666666666,
        "customCost": 0
      },
      "terway-eniip": {
        "name": "terway-eniip",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 1.0499999999999998,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 629145600,
        "ramByteUsageAverage": 122054656,
        "cost": 0.5609999999999999,
        "costRatio": 0.0935,
        "customCost": 0
      }
    }
  ]
}

Langkah selanjutnya

Allocation API menggabungkan data tagihan dan data biaya kluster untuk rekonsiliasi biaya amortisasi. Lihat Memperoleh data menggunakan Allocation API.