Jika penskalaan otomatis Pod vertikal tidak berfungsi seperti yang diharapkan di Google Kubernetes Engine (GKE), workload Anda mungkin tidak diskalakan dengan benar. Masalah ini dapat mencegah aplikasi menangani beban, yang dapat menyebabkan masalah performa atau gangguan. Anda mungkin melihat Pod tidak dimulai ulang dengan rekomendasi resource baru, atau rekomendasi yang tidak sesuai dengan penggunaan sebenarnya.
Gunakan dokumen ini untuk mengatasi masalah umum terkait konfigurasi VerticalPodAutoscaler atau rekomendasi yang tidak terduga. Mengikuti langkah-langkah pemecahan masalah ini dapat membantu aplikasi Anda menskalakan secara efisien dan andal berdasarkan permintaan.
Informasi ini penting bagi Developer Aplikasi yang mengonfigurasi resource VerticalPodAutoscaler dan perlu memastikan bahwa aplikasi mereka diskalakan dengan benar. Informasi ini juga membantu admin dan operator Platform memecahkan masalah terkait konfigurasi cluster yang memengaruhi workload yang diskalakan otomatis. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas yang kami referensikan dalam Cloud de Confiance by S3NS konten, lihat Peran dan tugas pengguna GKE umum.
Mendiagnosis masalah VerticalPodAutoscaler
Untuk mendiagnosis masalah dengan VerticalPodAutoscaler, periksa status dan
konfigurasi menggunakan kubectl atau Cloud de Confiance konsol.
Mendeskripsikan VerticalPodAutoscaler
Untuk melihat perhitungan real-time dan keputusan penskalaan terbaru, gunakan perintah kubectl describe vpa:
kubectl describe vpa VPA_NAME -n NAMESPACE_NAME
Ganti kode berikut:
VPA_NAME: nama VerticalPodAutoscaler Anda.NAMESPACE_NAME: namespace VerticalPodAutoscaler Anda.
Outputnya mirip dengan hal berikut ini:
Name: sample-deployment-vpa
Namespace: default
API Version: autoscaling.k8s.io/v1
Kind: VerticalPodAutoscaler
# Multiple lines are omitted here
Spec:
Target Ref:
API Version: apps/v1
Kind: Deployment
Name: sample-deployment
Update Policy:
Update Mode: Auto
Status:
Conditions:
Last Transition Time: 2025-10-09T10:00:00Z
Message: VPA is fetching history in order to provide recommendation
Reason: FetchingHistory
Status: True
Type: FetchingHistory
Last Transition Time: 2025-10-09T10:05:00Z
Message: VPA pod metrics aren't available yet
Reason: NoMetrics
Status: True
Type: LowConfidence
Last Transition Time: 2025-10-09T10:10:00Z
Message: VPA is able to provide a recommendation
Reason: RecommendationProvided
Status: True
Type: RecommendationProvided
Recommendation:
Container Recommendations:
Container Name: sample-container
Lower Bound:
Cpu: 100m
Memory: 128Mi
Target:
Cpu: 200m
Memory: 256Mi
Upper Bound:
Cpu: 500m
Memory: 512Mi
Events: <none>
Dalam output, tinjau bagian utama berikut:
Spec: menampilkan detail konfigurasi, termasuk kolomtargetRef(workload target) dan kolomupdatePolicy(cara update diterapkan).Status: menampilkan bagianConditions(kondisi operasional) dan bagianRecommendation(nilai resource CPU dan memori yang dibuat untuk setiap container).Events: mencantumkan tindakan atau error terbaru yang terkait dengan objek VerticalPodAutoscaler.
Melihat manifes VerticalPodAutoscaler
Untuk melihat konfigurasi dan status lengkap VerticalPodAutoscaler, periksa manifes
YAML-nya menggunakan kubectl atau Cloud de Confiance konsol:
Konsol
Di Cloud de Confiance konsol, buka halaman Object Browser.
Klik daftar filter Object Kind.
Hapus pilihan yang ada.
Pilih VerticalPodAutoscaler , lalu klik OK.
Dalam daftar yang difilter, pilih grup API autoscaling.k8s.io.
Pilih jenis objek VerticalPodAutoscaler.
Klik nama VerticalPodAutoscaler yang ingin Anda periksa.
kubectl
kubectl get vpa VPA_NAME \
-n NAMESPACE_NAME \
-o yaml
Ganti kode berikut:
VPA_NAME: nama VerticalPodAutoscaler Anda.NAMESPACE_NAME: namespace VerticalPodAutoscaler Anda.
Memeriksa status VerticalPodAutoscaler di Cloud de Confiance konsol
Untuk memeriksa status VerticalPodAutoscaler untuk workload Anda di Cloud de Confiance konsol:
Buka halaman Workloads.
Klik nama workload Anda.
Buka tab Details dan temukan bagian Autoscaler.
Tinjau baris Vertical Pod Autoscaler untuk pesan status terkait pengumpulan metrik dan kondisi konfigurasi.
Mengumpulkan log keputusan
Untuk mendapatkan insight mendetail tentang perhitungan dan keputusan VerticalPodAutoscaler, aktifkan vertical Pod autoscaler decision logs (Pratinjau) di Cloud Logging.
Log ini mencatat peristiwa seperti UPDATE_RECOMMENDATION, EVICT_POD, APPLY_RECOMMENDATION_IN_PLACE, dan APPLY_RECOMMENDATION_ON_EVICTION.
Untuk mengaktifkan dan memeriksa log keputusan, lihat Mengumpulkan log peristiwa penskalaan otomatis Pod vertikal.
Memecahkan masalah rekomendasi VerticalPodAutoscaler
Bagian berikut membahas masalah saat VerticalPodAutoscaler gagal menghasilkan rekomendasi atau menghasilkan rekomendasi yang berbeda dari ekspektasi.
VerticalPodAutoscaler tidak memberikan rekomendasi
Gejala:
- Kolom
Status.Recommendationdalam manifes VerticalPodAutoscaler kosong. - Kondisi dalam manifes VerticalPodAutoscaler menampilkan kondisi status
NoPodsMatched,FetchingHistory, atauLowConfidence.
Penyebab:
- Target salah: kolom
spec.targetRefdalam manifes VerticalPodAutoscaler tidak mengarah ke workload yang ada di namespace yang sama. - Pengumpulan metrik awal: VerticalPodAutoscaler baru dibuat dan masih mengumpulkan data penggunaan resource historis.
- Masalah komponen
metrics-server: VerticalPodAutoscaler bergantung pada metrik dari komponenmetrics-server. Jika komponenmetrics-servertidak berfungsi dengan benar, VerticalPodAutoscaler tidak dapat mengambil data penggunaan. - Tidak ada Pod yang berjalan: workload target tidak memiliki Pod yang berjalan atau siap untuk diamati oleh VerticalPodAutoscaler.
Resolusi:
Verifikasi kolom
targetRef: periksa nilai untuk kolomkind,name, danapiVersiondi bagianspec.targetRef. Pastikan semua nilai cocok dengan workload target. Untuk mengonfirmasi bahwa workload ada, jalankan:kubectl get KIND WORKLOAD_NAME \ -n NAMESPACE_NAMEGanti kode berikut:
KIND: jenis workload, misalnya,deploymentataustatefulset.WORKLOAD_NAME: nama workload Anda.NAMESPACE_NAME: namespace workload Anda.
Beri waktu untuk pengumpulan metrik: resource VerticalPodAutoscaler baru memerlukan waktu untuk mengumpulkan data. Pantau kolom
Status.Conditionsuntuk transisi ke kondisi statusRecommendationProvided.Periksa komponen
metrics-server:Verifikasi bahwa Pod untuk komponen
metrics-serversedang berjalan:kubectl get pods -n kube-system | grep metrics-serverJika Pod tidak berjalan atau memiliki jumlah memulai ulang yang tinggi, periksa log-nya:
kubectl logs -n kube-system -l k8s-app=metrics-serverEntri log yang berisi kata-kata seperti
error,failed, atauunable to fetchmenunjukkan masalah dengan pengumpulan metrik.
Pastikan Pod berjalan: verifikasi bahwa workload target memiliki setidaknya satu Pod yang berjalan dan siap.
Rekomendasi VerticalPodAutoscaler tidak terduga
Gejala:
- Nilai CPU atau memori di bagian
Status.Recommendationlebih tinggi atau lebih rendah dari yang diharapkan. - Rekomendasi tidak sesuai dengan konsumsi resource workload yang diamati.
Penyebab:
- Perubahan perilaku workload: Rekomendasi VerticalPodAutoscaler didasarkan pada penggunaan historis. Perubahan terbaru dalam pola konsumsi aplikasi mungkin belum tercermin.
- Karakteristik workload: tugas atau workload yang berumur pendek dengan pola penggunaan yang sangat fluktuatif mungkin tidak menerima rekomendasi yang optimal.
- Resource VerticalPodAutoscaler yang bertentangan: beberapa resource VerticalPodAutoscaler mungkin dikonfigurasi untuk menargetkan workload yang sama.
Resolusi:
- Beri waktu penyesuaian: beri waktu bagi VerticalPodAutoscaler untuk mempelajari pola penggunaan baru setelah perubahan aplikasi.
- Evaluasi kesesuaian: nilai apakah VerticalPodAutoscaler atau Horizontal Pod Autoscaler paling sesuai untuk jenis workload.
Periksa resource VerticalPodAutoscaler yang bertentangan:
Cantumkan semua resource VerticalPodAutoscaler di cluster Anda:
kubectl get vpa --all-namespacesPeriksa kolom
spec.targetRefuntuk setiap resource. Jika beberapa resource VerticalPodAutoscaler menargetkan workload yang sama, hapus atau sesuaikan resource yang bertentangan sehingga hanya satu VerticalPodAutoscaler yang menargetkan workload tertentu.
Memecahkan masalah pembaruan resource Pod
Bagian berikut membahas masalah saat rekomendasi ada tetapi tidak diterapkan ke Pod target.
Permintaan resource Pod tidak diperbarui
Gejala:
- Manifes VerticalPodAutoscaler menampilkan rekomendasi di bagian
Status, tetapi kolomresources.requestsdalam manifes Pod tidak diperbarui. - Pod tidak dimulai ulang untuk menerapkan rekomendasi saat menggunakan mode update
AutoatauRecreate.
Penyebab:
- Kolom
updateModeadalahOff: saatspec.updatePolicy.updateModekolom ditetapkan keOff, VerticalPodAutoscaler akan membuat rekomendasi tetapi tidak menerapkannya. - Workload hanya memiliki satu replika: dalam mode update
AutoatauRecreate, VerticalPodAutoscaler menghindari penghentian workload replika tunggal untuk mencegah waktu nonaktif.
Resolusi:
- Periksa kolom
updateMode: ubah manifes VerticalPodAutoscaler untuk menetapkan kolomspec.updatePolicy.updateModekeAuto,Recreate, atauInPlaceOrRecreate. - Tingkatkan jumlah replika: untuk workload yang menggunakan mode update
AutoatauRecreate, pastikan Deployment atau StatefulSet memiliki lebih dari satu replika.
Update di tempat gagal atau tetap ditangguhkan
Gejala:
- Pengubahan ukuran container di tempat gagal diselesaikan atau tetap ditangguhkan.
Penyebab:
- Kapasitas node tidak mencukupi: jika node tidak memiliki kapasitas untuk permintaan resource yang diperbarui, operasi pengubahan ukuran di tempat akan ditangguhkan.
Resolusi:
Verifikasi status pengubahan ukuran yang ditangguhkan dan kapasitas node:
Jika pengubahan ukuran tetap ditangguhkan selama lebih dari lima menit, VerticalPodAutoscaler akan kembali ke penghentian dan membuat ulang Pod untuk menerapkan rekomendasi. Untuk memeriksa status update yang ditangguhkan, lakukan hal berikut:
Periksa anotasi Pod untuk melihat apakah
vpaInPlaceUpdatedanotasi ditetapkan ke"true":metadata: annotations: vpaInPlaceUpdated: "true" vpaUpdates: 'Pod resources updated by sample-deployment-vpa: container 0: cpu request, memory request'Periksa status yang ditangguhkan dengan memeriksa kolom
status.conditionsuntuk peristiwa pengubahan ukuran yang ditangguhkan:status: conditions: - type: PodResizePending status: "True" reason: Deferred message: "Node didn't have enough resource: ..."Periksa peristiwa Kubernetes untuk Pod:
kubectl get events -n NAMESPACE_NAME --field-selector involvedObject.kind=Pod,involvedObject.name=POD_NAMEGanti kode berikut:
NAMESPACE_NAME: namespace Pod Anda.POD_NAME: nama Pod Anda.
Cari peristiwa dengan salah satu alasan berikut:
ResizedPod(update di tempat berhasil) atauEvictedByVPA(kembali ke pembuatan ulang).
Langkah berikutnya
Jika Anda tidak dapat menemukan solusi untuk masalah Anda dalam dokumentasi, lihat Mendapatkan dukungan untuk bantuan lebih lanjut, termasuk saran tentang topik berikut:
- Membuka kasus dukungan dengan menghubungi Cloud Customer Care.
- Mendapatkan dukungan dari komunitas dengan
mengajukan pertanyaan di StackOverflow
dan menggunakan tag
google-kubernetes-engineuntuk menelusuri masalah serupa. Anda juga dapat bergabung ke#kubernetes-enginesaluran Slack untuk mendapatkan dukungan komunitas lainnya. - Membuka masalah atau permintaan fitur menggunakan issue tracker publik.