全部产品
Search
文档中心

Container Service for Kubernetes:Memanggil API Cost V2 untuk meminta data biaya

更新时间:Jul 02, 2025

Anda dapat memanggil API Cost V2 untuk mendapatkan perkiraan biaya beban kerja kluster secara real-time. Saat memanggil API ini, Anda dapat menentukan rentang waktu dan menyaring beban kerja berdasarkan nama pod, namespace, label, controller (seperti csi-plugin), atau jenis controller (seperti ReplicaSet, DaemonSet, dan Job). Data biaya yang dikembalikan dapat digunakan untuk menganalisis tren biaya secara real-time.

Prasyarat

Pastikan prasyarat yang dijelaskan dalam topik Ikhtisar Pemanggilan API untuk Meminta Data Biaya telah terpenuhi.

Parameter permintaan dan parameter respons

Sintaksis permintaan

GET /v2/cost

Parameter permintaan

Parameter

Tipe

Diperlukan

Deskripsi

window

string

Ya

Rentang waktu yang akan ditanyakan. Format berikut didukung:

  • Kata kunci. Contoh: today, week, month, yesterday, lastweek, dan lastmonth.

  • Durasi. Contoh: 30m, 12h, dan 7d.

  • Tanggal RFC3339. Tentukan sepasang tanggal yang dipisahkan koma dalam format RFC3339. Contoh: 2024-03-26T00:00:00Z,2024-03-27T00:00:00Z.

  • Timestamp UNIX. Tentukan sepasang timestamp UNIX (dalam detik) yang dipisahkan koma. Contoh: 1711382400,1711468800.

filter

string

Tidak

Opsi filter untuk beban kerja. Jenis opsi filter berikut didukung:

  • namespace

  • controllerName (seperti csi-plugin dan node-exporter)

  • controllerKind (seperti ReplicaSet, DaemonSet, dan Job)

  • pod

  • label (seperti [app]:"nginx")

Anda dapat menentukan beberapa opsi filter dari tipe yang sama. Pisahkan opsi filter dengan koma (,). Contoh: namespace:"default","kube-system".

Anda juga dapat menentukan beberapa jenis opsi filter. Pisahkan jenis opsi filter yang berbeda dengan tanda tambah (+). Contoh: namespace:"default"+label[app]:"nginx".

step

string

Tidak

Interval yang digunakan untuk membagi rentang waktu. Parameter step menentukan interval set biaya. Contoh: 1d atau 1w. Nilai default adalah nilai parameter window.

Catatan

Set biaya mencakup data biaya objek Kubernetes, seperti pod, dalam interval tersebut.

aggregate

string

Tidak

Opsi agregat untuk hasil yang dikembalikan dari dimensi yang berbeda. Jenis opsi filter berikut didukung:

  • namespace

  • controller

  • controllerKind

  • label:<name>

  • node

idle

boolean

Tidak

Menentukan apakah akan menampilkan atau memproses biaya idle. Nilai default: true.

shareIdle

boolean

Tidak

Menentukan apakah akan mengalokasikan biaya idle ke setiap sumber daya. Nilai default: false.

shareSplit

string

Tidak

Kebijakan alokasi biaya idle. Jenis opsi filter berikut didukung:

  • weighted (default)

  • even

idleByNode

boolean

Tidak

Menentukan apakah akan mengumpulkan biaya idle setiap node. Parameter ini hanya berlaku jika Anda menetapkan parameter aggregate ke node dan parameter shareIdle ke false. Nilai default: false.

format

string

Tidak

Format yang digunakan untuk mengekspor biaya. Jenis opsi filter berikut didukung:

  • json (default)

  • csv

Parameter respons

Parameter

Tipe

Deskripsi

properties

object

Informasi tentang objek Kubernetes.

pod

string

Nama pod.

node

string

Nama node persetujuan.

namespace

string

Namespace tempat pod berada.

controllerKind

string

Jenis controller.

controller

string

Nama controller.

providerID

string

ID instance Elastic Compute Service (ECS) yang sesuai dengan node.

labels

map[string]string

Label pod.

Catatan

Prometheus hanya mengizinkan penggunaan garis bawah (_) dalam label. Jika label Anda mengandung simbol, seperti tanda hubung (-) dan titik (.), Prometheus akan mengonversi simbol tersebut menjadi garis bawah (_).

start

string

Waktu mulai set biaya.

end

string

Waktu akhir set biaya.

cpuCoreRequestAverage

float

Rata-rata jumlah core CPU yang diminta oleh pod.

cpuCoreUsageAverage

float

Rata-rata jumlah core CPU yang digunakan oleh pod.

ramByteRequestAverage

float

Rata-rata jumlah memori yang diminta oleh pod.

ramByteUsageAverage

float

Rata-rata jumlah memori yang digunakan oleh pod.

cost

float

Estimasi biaya pod. Bobot CPU default yang digunakan oleh kebijakan estimasi biaya adalah 100%. Untuk menentukan bobot resource kustom, lihat Kebijakan estimasi biaya.

costRatio

float

Rasio biaya pod. Parameter ini menunjukkan rasio biaya pod terhadap total biaya kluster.

customCost

float

Biaya kustom.

(Opsional) Langkah 1: Menentukan bobot resource kustom

Bobot CPU default dari kebijakan estimasi biaya yang diterapkan pada API Cost V2 adalah 100%. Untuk menentukan bobot resource kustom, ikuti langkah-langkah berikut:

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

  2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih Applications > Helm.

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

  4. Ubah parameter AlibabaCloudMetricsAdapter.costWeights di file konfigurasi YAML sesuai dengan kebutuhan bisnis Anda. Nilai default bidang ini adalah {"cpu": "1.0", "memory": "0.0"}. Lalu, klik OK.

    image

    Untuk menentukan bobot CPU dan bobot memori untuk kebijakan estimasi biaya, lihat Kebijakan Estimasi Biaya.

Langkah 2: Meminta data biaya

Dalam bagian ini, curl digunakan untuk mengakses API Kubernetes. Untuk informasi lebih lanjut, lihat Gunakan API Kubernetes.

Contoh 1: Meminta estimasi biaya DaemonSet dalam sehari sebelumnya

Perintah

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 sukses dalam format JSON

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: Meminta estimasi biaya pod dalam 3 jam (dibagi per jam)

Perintah

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 sukses dalam format JSON

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: Mendapatkan biaya semua aplikasi yang memiliki kunci label app dan menggabungkan set biaya berdasarkan nilai label

Perintah

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 sukses dalam format JSON

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

Referensi

API Allocation memungkinkan Anda mengalokasikan biaya bisnis berdasarkan tagihan untuk tujuan akuntansi. Untuk informasi lebih lanjut, lihat Memanggil API Allocation untuk Meminta Data Wawasan Biaya.