Halaman ini memberikan informasi tentang peristiwa keputusan yang dikeluarkan oleh horizontal Pod autoscaler di Google Kubernetes Engine (GKE). Dengan menganalisis peristiwa ini, Anda dapat memperoleh insight tentang cara pengontrol Horizontal Pod Autoscaler mengelola penskalaan workload dan memahami proses pengambilan keputusan di balik tindakannya.
Horizontal Pod Autoscaler menghasilkan peristiwa keputusan, yang disimpan sebagai entri log di Cloud Logging.
Sebelum memulai
Pastikan untuk menyelesaikan prasyarat berikut:
Pilih atau buat project
Anda dapat menggunakan project yang sudah ada, atau membuat project baru untuk tutorial ini.
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Mengaktifkan API
Aktifkan GKE dan Cloud Logging API, jika ada yang belum diaktifkan.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda
membuat project, kemungkinan Anda sudah memiliki izin ini melalui
peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui
peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin).
Pelajari cara memberikan peran.
Menyiapkan Cloud Shell
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk menjalankan perintah gcloud dan kubectl. Cloud Shell adalah lingkungan shell untuk mengelola
resource yang dihosting di Google Cloud. Cloud Shell telah diinstal lebih dulu dengan alat command line
Google Cloud CLI dan kubectl.
Di konsol Google Cloud , aktifkan Cloud Shell.
Sesi Cloud Shell akan terbuka di dalam frame yang lebih rendah di konsol.
Sebelum menjalankan perintah dalam tutorial ini, pastikan project default Anda ditetapkan ke project ID tempat Anda ingin men-deploy aplikasi contoh. Jika belum ditetapkan, jalankan perintah berikut di Cloud Shell:
gcloud config set project PROJECT_ID
Ganti PROJECT_ID dengan project ID Anda.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengaktifkan pembuatan log, serta mengakses dan memproses log, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Untuk mengaktifkan logging peristiwa horizontal Pod autoscaler di cluster Anda:
Kubernetes Engine Cluster Admin (
roles/container.clusterAdmin) -
Untuk mengakses log serta menggunakan Logs Explorer dan Observability Analytics:
Logs Viewer (
roles/logging.viewer)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Persyaratan
- Cluster GKE Anda harus menjalankan versi
1.31.5-gke.1090000atau yang lebih baru, atau1.32.1-gke.1260000atau yang lebih baru. - Aktifkan Cloud Logging di cluster GKE Anda. Harga Cloud Logging berlaku.
- Pastikan Anda memiliki penskalaan otomatis Pod horizontal yang ingin dipantau. Pastikan kolom penskalaan otomatis Pod horizontal tidak menyertakan data sensitif.
Biaya
Harga Cloud Logging berlaku saat Anda mengaktifkan Cloud Logging dan mengumpulkan log keputusan penskalaan otomatis Pod horizontal.
Mengaktifkan peristiwa keputusan penskalaan otomatis Pod horizontal
gcloud
Untuk membuat cluster baru dengan log keputusanKCP_HPA yang diaktifkan, jalankan perintah berikut:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_HPA
Untuk mengaktifkan log keputusan KCP_HPA di cluster yang ada, jalankan perintah berikut:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_HPA
Ganti kode berikut:
CLUSTER_NAME: nama cluster yang ingin Anda buat atau update.PROJECT_ID: ID project Google Cloud Anda.LOCATION: Region atau zona komputasi untuk cluster Anda.
Terraform
Untuk mengaktifkan log keputusanKCP_HPA menggunakan Terraform, perbarui resource google_container_cluster Anda. Di blok logging_config, tambahkan nilai KCP_HPA ke daftar untuk kolom enable_components:
resource "google_container_cluster" "primary" {
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other configuration ...
logging_config {
enable_components = ["SYSTEM_COMPONENTS", "KCP_HPA"]
}
}
Ganti kode berikut:
CLUSTER_NAME: nama cluster yang ingin Anda buat.LOCATION: Region atau zona komputasi untuk cluster Anda.
Perintah ini memungkinkan ekspor log yang dihasilkan oleh KCP_HPA dan menyimpannya di
tujuan logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller"
dalam Cloud Logging.
Ambil konfigurasi logging cluster yang diperbarui dan tinjau daftar log untuk memastikan log KCP_HPA diaktifkan:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
Outputnya mirip dengan hal berikut ini:
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_HPA
Melihat log penskalaan otomatis Pod horizontal di konsol Google Cloud
Anda dapat memantau perilaku penskalaan otomatis Pod horizontal di konsolGoogle Cloud . Tampilan ini memberikan cara mudah untuk melihat log rekomendasi atomik dan akhir yang sama yang tersedia di Cloud Logging, tanpa keluar dari konteks beban kerja Anda.
Untuk melihat log penskala otomatis Pod horizontal di konsol Google Cloud , selesaikan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Workloads:
Pilih workload yang dikelola oleh penskala otomatis Pod horizontal.
Klik tab Scaling.
Di tab ini, Anda dapat menemukan informasi terkait penskalaan, termasuk penggunaan resource, data efisiensi, dan log. Data di tab ini dapat membantu Anda mengidentifikasi konfigurasi yang paling efektif untuk menskalakan otomatis beban kerja Anda. Di bagian Log, Anda dapat menemukan informasi yang sama dari Log dan memfilter log ini menurut jenisnya, termasuk "Peristiwa", "Rekomendasi akhir", dan "Rekomendasi atomik". Untuk mengetahui detail selengkapnya tentang berbagai log, lihat Jenis Log.
Menonaktifkan peristiwa keputusan penskalaan otomatis Pod horizontal
gcloud
Perbarui cluster untuk menghapus komponenKCP_HPA dari flag --logging:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM
Ganti kode berikut:
CLUSTER_NAME: nama cluster yang ingin Anda buat atau update.PROJECT_ID: ID project Google Cloud Anda.LOCATION: Region atau zona komputasi untuk cluster Anda.
Terraform
Untuk menonaktifkan log keputusanKCP_HPA menggunakan Terraform, perbarui resource google_container_cluster Anda. Di blok logging_config, hapus nilai KCP_HPA dari daftar untuk kolom enable_components:
resource "google_container_cluster" "primary" {
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other configuration ...
logging_config {
enable_components = ["SYSTEM_COMPONENTS"]
}
}
Ganti kode berikut:
CLUSTER_NAME: nama cluster yang ingin Anda perbarui.LOCATION: Region atau zona komputasi untuk cluster Anda.
Perintah ini menonaktifkan ekspor log yang dihasilkan oleh KCP_HPA. Anda tidak dapat mengambilnya menggunakan filter logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller" dalam Cloud Logging.
Ambil konfigurasi logging cluster yang telah diupdate dan tinjau daftar log untuk memastikan log KCP_HPA dinonaktifkan:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
Outputnya mirip dengan hal berikut ini:
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
Jenis Log
Peristiwa keputusan untuk horizontal Pod autoscaler disimpan di Cloud Logging,
di lokasi logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller"
yang ada di bucket _Default dalam project yang sama dengan cluster GKE Anda.
Semua peristiwa yang dicatat ke dalam log memiliki format JSON dan dapat ditemukan di kolom jsonPayload pada entri log.
Pastikan Anda memahami kebutuhan penyimpanan potensi volume log, selain implikasi performa atau biaya. Contoh berikut menjelaskan seberapa sering autoscaler Pod horizontal menghasilkan setiap jenis peristiwa keputusan:
Rekomendasi atomik: Horizontal Pod Autoscaler menghasilkan satu peristiwa rekomendasi atomik setiap 15 detik untuk setiap metrik yang dipantau oleh setiap objek HPA di cluster Anda. Misalnya, jika Anda memiliki dua objek HPA di cluster dan setiap objek HPA memantau tiga metrik, enam rekomendasi atomik akan dicatat ke dalam log setiap 15 detik.
Rekomendasi akhir: Horizontal Pod Autoscaler menghasilkan satu peristiwa rekomendasi akhir setiap 15 detik untuk setiap objek HPA di cluster Anda. Misalnya, jika Anda memiliki dua objek HPA di cluster, dua rekomendasi akhir akan dicatat ke dalam log setiap 15 detik.
Secara total, dengan dua objek HPA yang masing-masing memantau tiga metrik, log KCP_HPA Anda akan menerima total delapan entri peristiwa keputusan setiap 15 detik.
Rekomendasi atomik
Log rekomendasi atomik menjelaskan rekomendasi berdasarkan metrik individual yang ditentukan di penskalaan otomatis Pod horizontal Anda.
Log atomik mencakup kolom berikut:
| Kolom | Deskripsi |
|---|---|
start_time |
Menunjukkan kapan HPA mulai menghitung rekomendasi. |
hpa |
Nama objek HPA yang terkait dengan rekomendasi. |
pod_count |
Menunjukkan jumlah total Pod yang terkait dengan HPA saat membuat rekomendasi. Jumlah ini juga mencakup Pod yang siap, tidak siap, dan diabaikan. |
metric |
Memberikan informasi tentang spesifikasi dan status metrik yang digunakan untuk rekomendasi. Kolom metric berisi sub-kolom berikut:
|
summary |
Kolom ringkasan berisi informasi mengenai hasil rekomendasi, termasuk jumlah replika yang disarankan. Jika rekomendasi tidak dapat diusulkan, pesan error akan ditampilkan. Kolom summary berisi sub-kolom berikut:
|
Contoh log rekomendasi atomik:
{
"insertId": "xiu4bty9k5b279wu",
"jsonPayload": {
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-a"
},
"atomicRecommendation": {
"startTime": "2025-02-06T20:07:00.573419526Z",
"hpa": "gke-managed-cim/kube-state-metrics",
"metric": {
"newestSampleAgeSeconds": -39.573419526,
"status": {
"averageValue": "25849856"
},
"newestSampleTime": "2025-02-06T20:06:21Z",
"type": "Resource",
"spec": {
"target": {
"averageValue": "400Mi"
},
"name": "memory"
}
},
"podCount": {
"ready": 1,
"total": 1
},
"summary": {
"override": "none",
"replicas": 1,
"dampening": "none"
}
}
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"project_id": "my-project-id",
"cluster_name": "my-cluster",
"location": "us-central1-a",
"component_location": "us-central1-a",
"component_name": "hpa-controller"
}
},
"timestamp": "2025-02-06T20:07:00.593777835Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project-id/logs/container.googleapis.com%2Fhpa-controller",
"sourceLocation": {
"file": "event_logger.go",
"line": "61"
},
"receiveTimestamp": "2025-02-06T20:07:05.284753647Z"
}
Rekomendasi akhir
Log rekomendasi akhir menjelaskan rekomendasi gabungan yang diusulkan oleh Horizontal Pod Autoscaler. Horizontal Pod Autoscaler menggabungkan semua rekomendasi atomik dari berbagai metrik untuk membuat rekomendasi akhir dan menggerakkan rekomendasi akhir. Aktuasi berarti HPA menginstruksikan Deployment untuk menyesuaikan jumlah replika agar sesuai dengan nilai yang direkomendasikan. Jika rekomendasi akhir menyarankan jumlah Pod yang berbeda dari jumlah Pod yang berjalan, Horizontal Pod Autoscaler akan memicu peristiwa peningkatan atau penurunan skala untuk menyesuaikan Deployment.
Log rekomendasi akhir mencakup kolom berikut:
| Kolom | Deskripsi |
|---|---|
start_time |
Menunjukkan kapan HPA mulai menghitung rekomendasi. |
hpa |
Nama objek HPA yang terkait dengan rekomendasi. |
target_ref |
Menunjukkan objek ScaleTargetRef HPA yang terkait dengan rekomendasi. |
configured_size |
Jumlah replika terakhir yang dicatat sebelum HPA menghitung dan menerapkan rekomendasi ini. |
top_level_override |
Memberikan alasan jika rekomendasi yang diusulkan oleh HPA tidak diterapkan (misalnya, karena toleransi); atau none jika tidak ada penggantian. |
top_level_limit |
Memberikan alasan jika rekomendasi yang diusulkan oleh HPA perlu disesuaikan (misalnya, karena jumlah replika yang ditentukan oleh kolom MinReplicas atau MaxReplicas dalam spesifikasi HPA). |
leading_metric_index |
Indeks metrik utama dalam array Spec metrics adalah metrik yang rekomendasi atomiknya terkait digunakan sebagai rekomendasi akhir. |
normalization |
Memberikan ringkasan stabilisasi dan batasan sebagai berikut, jika ada:
|
replicas |
Jumlah replika yang direkomendasikan. |
actuation_error |
Pesan error yang terkait dengan kegagalan, jika aktuasi gagal. |
actuation_time |
Stempel waktu pengaktifan saat berhasil. |
actuation_latency_seconds |
Waktu yang berlalu, dalam detik, dari awal komputasi rekomendasi hingga aktivasi berhasil. |
Contoh log rekomendasi akhir:
{
"insertId": "qzyv7alfv1sm19ns",
"jsonPayload": {
"finalRecommendation": {
"actuationTime": "2025-02-06T20:06:57.487786873Z",
"targetRef": {
"name": "kube-state-metrics",
"kind": "StatefulSet",
"apiVersion": "apps/v1"
},
"topLevelLimit": "none",
"hpa": "gke-managed-cim/kube-state-metrics",
"topLevelOverride": "noRecommendation",
"replicas": 1,
"configuredSize": 1,
"actuationLatencySeconds": 0.003722451,
"startTime": "2025-02-06T20:06:57.484064422Z"
},
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-a"
}
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"cluster_name": "my-cluster",
"component_location": "us-central1-a",
"component_name": "hpa-controller",
"location": "us-central1-a",
"project_id": "my-project-id"
}
},
"timestamp": "2025-02-06T20:06:57.488193527Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project-id/logs/container.googleapis.com%2Fhpa-controller",
"sourceLocation": {
"file": "event_logger.go",
"line": "61"
},
"receiveTimestamp": "2025-02-06T20:06:57.844898727Z"
}
Pemecahan masalah
Bagian ini menjelaskan masalah dan langkah penyelesaian terkait peristiwa Horizontal Pod Autoscaler.
Tidak ada peristiwa
Jika Anda tidak melihat peristiwa keputusan penskalaan otomatis Pod horizontal, pastikan Anda telah melakukan semua hal berikut:
- Anda telah mengaktifkan Cloud Logging untuk cluster.
- Anda telah mengaktifkan log
KCP_HPAuntuk cluster. - Anda telah men-deploy setidaknya satu objek
hpayang dikonfigurasi dengan benar ke cluster.
Untuk melihat konfigurasi objek hpa, jalankan perintah berikut:
kubectl describe hpa $HPA_NAME
Jika Anda masih tidak melihat log KCP_HPA, hubungi Google Cloud Dukungan.
Langkah berikutnya
- Lihat Tentang log GKE.
- Memahami log GKE Anda.
- Pelajari cara menemukan log GKE tertentu menggunakan contoh kueri.
- Pelajari lebih lanjut penskalaan otomatis Pod horizontal.