Mendapatkan insight utama tentang pembelanjaan untuk alokasi resource GKE dan biaya cluster Anda

Dokumen ini menunjukkan cara mendapatkan insight pengeluaran utama untuk menginformasikan keputusan alokasi resource dan pengoptimalan biaya menggunakan alokasi biaya Google Kubernetes Engine (GKE). Pelajari perbedaan antara alokasi biaya GKE dan pengukuran penggunaan cluster, batasan alokasi biaya GKE, cara mengaktifkan alokasi biaya GKE pada cluster baru dan yang sudah ada, serta cara memfilter dan membuat kueri ekspor BigQuery Penagihan Cloud.

Dokumen ini ditujukan untuk Operator, Arsitek cloud, Developer, dan Administrator data yang perlu mengelola biaya saat mereka membuat dan mengonfigurasi cluster serta men-deploy workload di GKE. Untuk mempelajari lebih lanjut peran umum, lihat Peran dan tugas pengguna GKE umum.

Sebelum membaca dokumen ini, sebaiknya Anda memahami Praktik terbaik untuk menjalankan aplikasi Kubernetes yang hemat biaya di GKE

Potensi peningkatan volume data

Mengaktifkan alokasi biaya GKE dapat meningkatkan biaya penyimpanan dan kueri Anda di BigQuery. Peningkatan biayanya bergantung pada jumlah kombinasi label dan namespace yang berbeda yang Anda gunakan di seluruh Pod dan cluster.

Mengaktifkan alokasi biaya GKE tidak mengubah total biaya penggunaan GKE Anda. Jumlah item baris biaya dalam ekspor Anda sama, dan kueri serta laporan yang sudah ada yang dibuat di ekspor penagihan akan menampilkan nilai yang sama.

Alokasi biaya GKE dan pengukuran penggunaan cluster

Perbedaan alokasi biaya GKE dan pengukuran penggunaan cluster terletak pada hal berikut ini:

  • Alokasi biaya GKE memberikan alternatif untuk pengukuran penggunaan cluster dalam mendapatkan informasi cluster.
  • Alokasi biaya GKE menghitung biaya cluster di akun Penagihan Cloud Anda, bukannya menggabungkan data dalam template Data Studio.
  • Dengan alokasi biaya GKE, Anda dapat melihat data biaya cluster di konsol Google Cloud Penagihan Cloud dan di ekspor mendetail Penagihan Cloud.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Pembatasan dan batasan

  • Anda hanya dapat melihat data alokasi biaya GKE di ekspor data biaya penggunaan mendetail Penagihan Cloud ke BigQuery. Data alokasi GKE tidak tersedia dalam data biaya penggunaan standar yang diekspor ke BigQuery.
  • Jika Anda mengaktifkan alokasi biaya GKE, ekspor penagihan akan mulai menyertakan item baris tambahan untuk resource GKE Anda sejak tanggal tersebut. Ekspor penagihan tidak mengisi ulang data.
  • Jika Anda menonaktifkan alokasi biaya GKE, ekspor penagihan akan berhenti menyertakan item baris tambahan, tetapi tidak mengubah atau menghapus item baris sebelumnya yang dibuat saat fitur diaktifkan.
  • Data alokasi biaya GKE didasarkan pada permintaan resource, bukan resource yang dipakai. Untuk mempelajari lebih lanjut perbedaan antara permintaan resource, batas resource, dan konsumsi resource, silakan membaca Praktik terbaik Kubernetes: Permintaan dan batas resource.
  • Alokasi biaya GKE mendukung jenis SKU resource berikut:
    • SKU vCPU Instance VM Compute Engine
    • SKU RAM Instance VM Compute Engine
    • SKU RAM Instance VM Compute Engine Kustom yang Diperluas
    • SKU GPU Instance VM Compute Engine
    • SKU Kapasitas PD Compute Engine
    • SKU Instance Cloud TPU
  • Jika Pod memiliki lebih dari 50 label Kubernetes, tidak satu pun dari label tersebut yang akan tersedia di bagian Penagihan Cloud dalam ekspor mendetail Penagihan Cloud atau Google Cloud konsol.
  • Setelah Anda mengaktifkan alokasi biaya GKE, data dapat memerlukan waktu hingga tiga hari untuk muncul di Penagihan Cloud.
  • Alokasi biaya GKE mencakup data dari Persistent Disk, dengan pengecualian berikut ini:
    • Hanya mendukung PersistentVolume resource yang disediakan secara dinamis melalui PersistentVolumeClaims atau Volume Ephemeral Generik.
    • Hanya mendukung resource PersistentVolume yang disediakan oleh Driver CSI persistent disk Compute Engine atau dengan plugin penyimpanan kubernetes.io/gce-pd yang tidak digunakan lagi dengan mode akses ReadWriteOnce atau ReadWriteOncePod.
    • Persistent Disk dengan waktu beroperasi kurang dari 30 menit mungkin tidak dilacak. Persistent Disk dengan waktu beroperasi minimal 30 menit selalu dilacak.
  • Versi Cloud TPU harus Cloud TPU v4 atau yang lebih baru.
  • Alokasi biaya GKE tidak berfungsi dengan instance VM A4 atau A4X, atau GPU yang terpasang ke instance tersebut.
  • Alokasi biaya GKE tidak didukung saat menggunakan solusi pengelolaan node eksternal yang melewati kumpulan node GKE.
  • Saat menggunakan Diskon Abonemen (DA) dengan berbagi diskon diaktifkan, biaya untuk instance yang tercakup oleh DA mungkin tidak sepenuhnya dipecah berdasarkan alokasi biaya GKE dan mungkin diatribusikan ke namespace seperti goog-k8s-unsupported-sku.

Melihat biaya cluster GKE

Saat Anda mengaktifkan alokasi biaya GKE, nama cluster dan namespace workload GKE Anda akan muncul di kolom labels dari data penagihan yang diekspor ke BigQuery:

Kunci label resource (labels.key) Nilai label resource (labels.value)
Deskripsi Label Kubernetes memiliki format berikut: k8s-label/${k8s-label-key}, dengan ${k8s-label-key} yang merupakan kunci label Kubernetes Pod. Label penagihan k8s-label/${k8s-label-key} memiliki nilai yang sama dengan label Pod Kubernetes yang sesuai. Jika kunci label Kubernetes tumpang-tindih dengan kunci label VM, nilai label Kubernetes akan lebih diprioritaskan daripada nilai label VM. Label resource cluster dan node pool diterapkan ke resource menggunakan prioritas berikut dari tertinggi hingga terendah:
  • Resource individual, seperti instance atau penyimpanan
  • Kumpulan node
  • Cluster
Nama cluster goog-k8s-cluster-name [cluster-name]
Namespace k8s-namespace [namespace]
Jenis workload k8s-workload-type [workload-type]
(misalnya, apps/v1-Deployment,apps/v1-StatefulSet,apps/v1-DaemonSet,apps/v1-ReplicaSet,batch/v1-Job,batch/v1-CronJob,core/v1-Pod)
Nama workload k8s-workload-name [workload-name]

Untuk mengetahui informasi selengkapnya, silakan melihat Skema data biaya penggunaan mendetail.

Selain itu, namespace berikut digunakan untuk melacak overhead dan resource yang tidak dialokasikan:

  • kube:system-overhead: Ini memperhitungkan resource node yang tidak tersedia untuk Pod. Resource ini dicadangkan oleh sistem untuk menjalankan framework Kubernetes (termasuk, tetapi tidak terbatas pada kubelet, kube-proxy, containerd). Ini adalah perbedaan antara kapasitas Node dan resource yang dapat dialokasikan.
  • kube:unallocated: Resource tidak diminta oleh workload atau diminta untuk overhead sistem.

Jika GKE tidak dapat menentukan alokasi biaya untuk resource, ekspor akan menyertakan salah satu nilai berikut:

  • goog-k8s-unknown: Penagihan Cloud tidak dapat memproses SKU. Hal ini dapat terjadi saat instance Compute Engine baru sedang disediakan. Anda dapat mengharapkan beberapa nilai goog-k8s-unknown selama startup dan shutdown node, misalnya saat GKE melakukan penskalaan otomatis pada cluster.
  • goog-k8s-unsupported-sku: Alokasi biaya GKE tidak mendukung SKU ini. Perlakukan ini seperti <blank>/NULL. Tidak ada jaminan bahwa SKU selalu diberi label dengan nilai ini.
  • <blank>/NULL: Alokasi biaya GKE tidak melacak resource ini. Hal ini dapat terjadi saat alokasi biaya GKE tidak diaktifkan, atau resource tidak termasuk dalam cluster yang dikelola GKE.

Biaya untuk Persistent Disk dilacak saat PersistentVolumeClaims pendukung Persistent Disk diklaim oleh Pod. Biaya Persistent Disk akan mewarisi semua metadata, seperti label dan namespace Pod dari Pod yang mengklaim, hingga PersistentVolumeClaims dihapus. Untuk PersistentVolumeClaims yang dihapus, tetapi mempertahankan PersistentVolumes, berdasarkan kebijakan klaim kembali, biaya Persistent Disk akan dilacak sebagai tidak dialokasikan.

Label yang diterapkan secara langsung ke PersistentVolumeClaims tidak akan muncul di bagian Penagihan Cloud pada Google Cloud konsol atau ekspor mendetail Penagihan Cloud.

Untuk RAM yang Diperluas, proporsi biaya total yang sama dialokasikan ke workload untuk SKU RAM Reguler dan RAM yang Diperluas berdasarkan resource yang diminta.

Mengaktifkan alokasi biaya GKE

Anda dapat mengaktifkan alokasi biaya GKE pada cluster baru atau yang sudah ada menggunakan gcloud CLI atau Google Cloud konsol.

gcloud

Update cluster menggunakan flag --enable-cost-allocation:

gcloud container clusters update CLUSTER_NAME \
    --enable-cost-allocation

Ganti CLUSTER_NAME dengan nama cluster.

Anda juga dapat menggunakan flag --enable-cost-allocation saat Anda membuat cluster baru menggunakan perintah gcloud container clusters create.

Konsol

Untuk mengaktifkan alokasi biaya GKE pada cluster yang sudah ada, lakukan langkah-langkah berikut:

  1. Buka halaman Google Kubernetes Engine di Google Cloud konsol. Buka Google Kubernetes Engine
  2. Klik nama cluster yang ingin diubah.
  3. Di halaman Cluster, pada bagian Fitur, klik di samping Alokasi Biaya.
  4. Di dialog Edit Alokasi Biaya, centang kotak Aktifkan Alokasi Biaya.
  5. Klik Simpan perubahan.

Memastikan alokasi biaya GKE sudah diaktifkan

gcloud

Jelaskan cluster:

gcloud container clusters describe CLUSTER_NAME

Outputnya mirip dengan hal berikut ini:

...
costManagementConfig:
  enabled: true
...

Dalam output ini, costManagementConfig menunjukkan bahwa alokasi biaya GKE diaktifkan.

Konsol

Untuk memeriksa apakah alokasi biaya GKE telah diaktifkan pada cluster yang sudah ada, lakukan langkah-langkah berikut:

  1. Buka halaman Google Kubernetes Engine di Google Cloud konsol. Buka Google Kubernetes Engine
  2. Klik nama cluster yang ingin diubah.
  3. Di halaman Cluster , pada bagian Fitur , di samping Alokasi Biaya , Anda akan melihat apakah alokasi biaya GKE diaktifkan atau tidak.

Melihat dan memfilter ekspor data penagihan

Anda dapat menggunakan label Kubernetes yang dijelaskan dalam dokumen ini untuk memfilter biaya di halaman laporan Penagihan Cloud di Google Cloud konsol.

Anda dapat memfilter dan mengelompokkan biaya GKE di set data BigQuery menggunakan salah satu metode berikut:

Anda dapat menggunakan contoh kueri berikut dengan metode ini untuk memfilter data penagihan yang diekspor untuk informasi yang khusus untuk GKE:

  • Mendapatkan biaya setelah kredit berdasarkan namespace:

    SELECT
      labels.value as namespace,
      SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS cost_after_credits,
    FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
    LEFT JOIN UNNEST(labels) as labels
      ON labels.key = "k8s-namespace"
    GROUP BY namespace
    ;
    
  • Mendapatkan biaya cluster sebelum kredit:

    SELECT
      SUM(cost) AS cost_before_credits,
      labels.value AS cluster_name
    FROM  `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
    LEFT JOIN UNNEST(labels) as labels
      ON labels.key = "goog-k8s-cluster-name"
    GROUP BY labels.value
    ;
    
  • Mendapatkan total biaya terkait GKE berdasarkan SKU:

    SELECT
      project.id AS project_id,
      labels.value AS cluster_name,
      sku.id AS sku_id,
      sku.description AS sku_description,
      SUM(cost) AS cost
    FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
    JOIN UNNEST(labels) AS labels
      ON labels.key = "goog-k8s-cluster-name"
    GROUP BY
      cluster_name, project_id, sku_description, sku_id
    ;
    
  • Mendapatkan biaya berdasarkan nama workload sebelum kredit:

    SELECT
      labels.value as workload_name,
      SUM(cost) AS cost
    FROM `project-ID.dataset.gcp_billing_export_resource_v1_YYYYYY-YYYYYY-YYYYYY`
    LEFT JOIN UNNEST(labels) as labels
      ON labels.key = "k8s-workload-name"
    WHERE labels.value IS NOT NULL
    GROUP BY workload_name
    ORDER BY cost DESC
    ;
    

Pembersihan

Agar akun Anda tidak dikenai biaya untuk resource yang digunakan di halaman ini, nonaktifkan alokasi biaya GKE untuk cluster: Google Cloud

gcloud container clusters update CLUSTER_NAME \
    --no-enable-cost-allocation

Anda juga dapat menghapus cluster yang Anda buat.

Anda juga dapat menggunakan alat command line gcloud untuk melihat dan mengelola label. Untuk mengetahui informasi selengkapnya, lihat dokumentasi gcloud resource-manager tags.

Langkah berikutnya