All Products
Search
Document Center

Container Service for Kubernetes:Dapatkan data biaya menggunakan Cost API

Last Updated:Mar 27, 2026

Gunakan Cost API untuk mengkueri data estimasi biaya real-time dan penggunaan sumber daya untuk Pod atau namespace dalam kluster ACK.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Dimensi kueri yang didukung

Cost API mendukung dimensi kueri berikut:

  • Pod — kueri berdasarkan Pod individual, beberapa Pod, atau Pod yang difilter berdasarkan label

  • Namespace — kueri berdasarkan namespace individual atau semua namespace

Gunakan DimensionType dan Dimension secara bersamaan untuk menargetkan cakupan tertentu. Tambahkan LabelSelector untuk memfilter berdasarkan label pada salah satu dimensi tersebut. LabelSelector dan DimensionType digabungkan dengan logika AND.

Parameter

Semua contoh menggunakan kubectl get --raw terhadap titik akhir berikut:

/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost

Tambahkan parameter kueri ke titik akhir ini untuk memfilter hasil.

Parameter Deskripsi Bawaan Nilai yang valid
DimensionType Dimensi untuk mengkueri data biaya Pod (semua Pod) Namespace, Pod
Dimension Memfilter hasil ke namespace atau Pod tertentu. Abaikan untuk mengembalikan semua. Untuk mengkueri beberapa Pod, gunakan nilai yang dipisahkan koma: pod=<name1>,pod=<name2> Semua Nama namespace atau nama Pod
LabelSelector Memfilter Pod berdasarkan label app app=<label-value>
TimeUnit Rentang waktu data biaya yang akan dikembalikan hour hour, day, week, month
Summary Jika diatur ke true, mengembalikan data biaya agregat untuk semua Pod yang sesuai alih-alih data per-Pod false true, false

Metrik data biaya

Setiap entri respons mencakup metrik biaya berikut:

Bidang Unit Deskripsi
cpu vCores Penggunaan CPU
gpu Jumlah Jumlah GPU
memory KB Penggunaan memori
perCorePricing $ (Situs internasional) Harga satuan vCores pada node yang menjalankan Pod atau aplikasi
costRatio Rasio biaya Pod atau aplikasi ini terhadap total biaya kluster. Misalnya, 0.2 berarti 20% dari total biaya kluster
cost $ (Situs internasional) Total biaya Pod atau aplikasi dalam rentang waktu yang dikueri
customCost Biaya kustom Pod atau aplikasi dalam rentang waktu yang dikueri

Setiap entri juga mencakup sub-bidang request, usage, dan limit untuk cpu, memory, gpu, dan gpuMem:

Sub-bidang Deskripsi
request Jumlah sumber daya yang diminta oleh Pod
usage Konsumsi sumber daya aktual oleh Pod
limit Batas sumber daya yang dikonfigurasi untuk Pod

Contoh

Contoh 1: Kueri semua Pod dalam kluster untuk jam sebelumnya

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost"

Klik untuk melihat output yang diharapkan

[
  {
    "metadata": {
      "timestamp": "2023-02-14T03:27:18Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "arms-springboot-demo-subcomponent-7f94c7f597-5l8tc"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.022,
      "memory": 1538784,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T03:27:18Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "thanos-query-74cfcd459f-pf54n"
    },
    "request": {
      "cpu": 0.1,
      "memory": 131072,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.001,
      "memory": 90780,
      "gpu": 0,
      "gpuMem": 0
    },
    ...
  }
]

Contoh 2: Kueri semua Pod dalam namespace untuk jam sebelumnya

Ganti default dengan nama namespace target.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Namespace&Dimension=default" | jq .

Klik untuk melihat output yang diharapkan

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:08:15Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": "test60-test-chart-v2-5cd85b946c-ntcct"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 18336,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0,
    "costRatio": 0,
    "cost": 0
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:08:15Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": "nginx"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    ...
  }
]

Contoh 3: Kueri Pod tertentu untuk jam sebelumnya

Ganti nama Pod dengan nilai aktual.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Pod&Dimension=pod=nginx-deployment-basic-75d6678cbb-lg8v5" | jq .

Klik untuk melihat output yang diharapkan

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:09:50Z",
      "timeUnit": "hour",
      "DimensionType": "Pod",
      "Dimension": "pod=nginx-deployment-basic-75d6678cbb-lg8v5",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.002,
      "memory": 50148,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  }
]

Contoh 4: Kueri Pod berdasarkan label

Perintah berikut mengkueri semua Pod dengan label app=nginx untuk jam sebelumnya. Ganti nilai label dengan nilai aktual.

LabelSelector dan DimensionType digabungkan dengan logika AND. Mengabaikan DimensionType akan mengkueri seluruh Pod yang sesuai dengan label tersebut.
kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?LabelSelector=app=nginx" | jq .

Klik untuk melihat output yang diharapkan

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:24Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.002,
      "memory": 50148,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:24Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-675b8d6f54-vqxvd"
    },
    "request": {
      "cpu": 0.25,
      "memory": 524288,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 13548,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.005335609860207022,
    "cost": 0.05
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:25Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-deployment-basic-7456bcd48d-r87rz"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 223492,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0,
    "costRatio": 0,
    "cost": 0
  }
]

Contoh 5: Kueri biaya Pod untuk hari sebelumnya

Ganti nama Pod dengan nilai aktual.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Pod&Dimension=pod=nginx-deployment-basic-75d6678cbb-lg8v5&TimeUnit=day" | jq .

Klik untuk melihat output yang diharapkan

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:11:04Z",
      "timeUnit": "day",
      "DimensionType": "Pod",
      "Dimension": "pod=nginx-deployment-basic-75d6678cbb-lg8v5",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.001,
      "memory": 50196,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010571112959515542,
    "cost": 2.402
  }
]

Contoh 6: Kueri biaya agregat untuk namespace

Atur Summary=true untuk mendapatkan satu entri agregat untuk semua Pod dalam namespace alih-alih hasil per-Pod. Ganti default dengan nama namespace target.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Namespace&Dimension=default&Summary=true" | jq .

Klik untuk melihat output yang diharapkan

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:12:48Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": ""
    },
    "request": {
      "cpu": 12,
      "memory": 7045120,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.053,
      "memory": 4901208,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 6553600,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 4.061,
    "costRatio": 0.01609432143753053,
    "cost": 3.657
  }
]

Langkah berikutnya

Referensi