Cost V2 API memungkinkan Anda mengkueri estimasi biaya real-time untuk beban kerja kluster Anda. Anda dapat menentukan rentang waktu yang fleksibel dan menerapkan filter berdasarkan dimensi seperti pod, namespace, label, nama controller (misalnya, csi-plugin), serta jenis controller (misalnya, ReplicaSet, DaemonSet, atau Job). Fitur ini berguna untuk analisis tren biaya secara real-time.
Prasyarat
Lengkapi prasyarat yang dijelaskan dalam Ikhtisar cara memperoleh data biaya menggunakan API.
Parameter permintaan dan respons
Sintaksis permintaan
GET /v2/cost
Parameter permintaan
|
Parameter |
Type |
Wajib |
Deskripsi |
|
window |
string |
Ya |
Rentang waktu untuk dikueri. Format berikut didukung:
|
|
filter |
string |
Tidak |
Memfilter hasil berdasarkan kategori resource. Kategori berikut didukung:
Anda dapat menentukan beberapa nilai untuk kategori yang sama dengan memisahkannya menggunakan koma (,), contohnya Anda juga dapat menggabungkan kategori berbeda dengan menggunakan tanda plus (+), contohnya |
|
step |
string |
Tidak |
Interval waktu untuk membagi respons menjadi beberapa set biaya. Contohnya, Catatan
Set biaya adalah kumpulan biaya untuk suatu objek Kubernetes, seperti pod, dalam periode waktu tertentu. |
|
aggregate |
string |
Tidak |
Dimensi yang digunakan untuk mengagregasi hasil kueri. Dimensi berikut didukung:
|
|
idle |
boolean |
Tidak |
Apakah akan menyertakan dan memproses biaya idle. Nilai default-nya adalah |
|
shareIdle |
boolean |
Tidak |
Apakah akan mengalokasikan biaya idle ke resource. Nilai default-nya adalah |
|
shareSplit |
string |
Tidak |
Kebijakan untuk mengalokasikan biaya idle. Nilai berikut didukung:
|
|
idleByNode |
boolean |
Tidak |
Menentukan apakah akan mengagregasi biaya idle berdasarkan node. Parameter ini hanya berlaku ketika |
|
format |
string |
Tidak |
Format untuk mengekspor data biaya. Format berikut didukung:
|
Parameter respons
|
Parameter |
Tipe |
Deskripsi |
|
properties |
object |
Properti dari objek Kubernetes terkait. |
|
pod |
string |
Nama pod. |
|
node |
string |
Nama node. |
|
namespace |
string |
Namespace. |
|
controllerKind |
string |
Jenis controller. |
|
controller |
string |
Nama controller. |
|
providerID |
string |
ID instans Elastic Compute Service (ECS) yang sesuai dengan node tersebut. |
|
labels |
map[string]string |
Label pod. Catatan
Prometheus hanya mendukung garis bawah (_) dalam label. Jika label Anda mengandung simbol lain, seperti tanda hubung (-) atau titik (.), Prometheus akan mengonversinya menjadi garis bawah (_). |
|
start |
string |
Waktu mulai set biaya. |
|
end |
string |
Waktu akhir set biaya. |
|
cpuCoreRequestAverage |
float |
Rata-rata jumlah core CPU yang diminta. |
|
cpuCoreUsageAverage |
float |
Rata-rata jumlah core CPU yang digunakan. |
|
ramByteRequestAverage |
float |
Rata-rata jumlah memori yang diminta. |
|
ramByteUsageAverage |
float |
Rata-rata jumlah memori yang digunakan. |
|
cost |
float |
Estimasi biaya. Secara default, kebijakan estimasi biaya menggunakan bobot CPU sebesar 100%. Untuk menyesuaikan bobot resource, lihat Kebijakan estimasi biaya. |
|
costRatio |
float |
Rasio biaya resource terhadap total biaya kluster. |
|
customCost |
float |
Biaya kustom. |
(Opsional) Langkah 1: Menyesuaikan bobot biaya resource
Secara default, Cost V2 API menggunakan kebijakan estimasi biaya dengan bobot CPU 100%. Untuk menyesuaikan pembobotan ini, ikuti langkah-langkah berikut.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Helm, temukan
ack-alibaba-cloud-metrics-adapterdan klik Update pada kolom Actions. -
Pada file YAML, ubah parameter
AlibabaCloudMetricsAdapter.costWeights. Nilai default-nya adalah{"cpu": "1.0", "memory": "0.0"}. Setelah melakukan modifikasi, klik OK.
Untuk informasi lebih lanjut tentang kebijakan estimasi sumber daya campuran (CPU dan memori), lihat Kebijakan estimasi biaya.
Langkah 2: Mengambil data biaya
Contoh berikut menunjukkan cara menggunakan curl untuk mengakses API Kubernetes. Untuk informasi lebih lanjut, lihat Menggunakan API Kubernetes.
Contoh 1: Kueri biaya DaemonSet untuk kemarin
Permintaan
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 (format JSON)
Contoh 2: Mengkueri biaya pod per jam selama tiga jam
Permintaan
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 (format JSON)
Contoh 3: Mengkueri biaya yang diagregasi berdasarkan label app
Permintaan
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 (format JSON)
Referensi
Allocation API menggabungkan data tagihan untuk memberikan biaya amortisasi guna rekonsiliasi. Untuk informasi lebih lanjut, lihat Memperoleh data menggunakan Allocation API.