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 menyelesaikan masalah umum terkait konfigurasi VerticalPodAutoscaler atau rekomendasi yang tidak terduga. Mengikuti langkah-langkah pemecahan masalah ini dapat membantu aplikasi Anda melakukan penskalaan 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. Hal ini juga membantu admin dan operator Platform memecahkan masalah konfigurasi cluster yang memengaruhi workload yang diskalakan otomatis. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud , lihat Peran dan tugas pengguna GKE umum.
Mendiagnosis masalah VerticalPodAutoscaler
Untuk mendiagnosis masalah pada VerticalPodAutoscaler, periksa status dan
konfigurasi menggunakan kubectl atau konsol Google Cloud .
Mendeskripsikan VerticalPodAutoscaler
Untuk melihat penghitungan 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>
Pada output, tinjau bagian utama berikut:
Spec: menampilkan detail konfigurasi, termasuk kolomtargetRef(beban kerja yang ditargetkan) dan kolomupdatePolicy(cara penerapan update).Status: menampilkan bagianConditions(kesehatan operasional) dan bagianRecommendation(nilai resource CPU dan memori yang dihasilkan 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
manifest YAML-nya menggunakan kubectl atau konsol Google Cloud :
Konsol
Di konsol Google Cloud , buka halaman Object Browser.
Klik daftar filter Jenis Objek.
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 konsol Google Cloud
Untuk memeriksa status VerticalPodAutoscaler untuk workload Anda di konsol Google Cloud :
Buka halaman Workloads.
Klik nama workload Anda.
Buka tab Details dan cari bagian Autoscaler.
Tinjau baris Vertical Pod Autoscaler untuk mengetahui pesan status terkait pengumpulan metrik dan kondisi konfigurasi.
Mengumpulkan log keputusan
Untuk mendapatkan insight mendetail tentang perhitungan dan keputusan VerticalPodAutoscaler, aktifkan log keputusan penskalaan otomatis Pod vertikal (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.Recommendationdi manifes VerticalPodAutoscaler kosong. - Kondisi dalam manifes VerticalPodAutoscaler menunjukkan 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 saja dibuat dan masih mengumpulkan data penggunaan resource historis.
- Masalah komponen
metrics-server: VerticalPodAutoscaler mengandalkan 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 beban kerja ada, jalankan:kubectl get KIND WORKLOAD_NAME \ -n NAMESPACE_NAMEGanti kode berikut:
KIND: jenis beban kerja, misalnya,deploymentataustatefulset.WORKLOAD_NAME: nama workload Anda.NAMESPACE_NAME: namespace workload Anda.
Berikan waktu untuk pengumpulan metrik: resource VerticalPodAutoscaler baru memerlukan waktu untuk mengumpulkan data. Pantau kolom
Status.Conditionsuntuk transisi ke kondisi statusRecommendationProvided.Periksa komponen
metrics-server:Pastikan Pod untuk komponen
metrics-serversedang berjalan:kubectl get pods -n kube-system | grep metrics-serverJika Pod tidak berjalan atau memiliki jumlah mulai 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 pada pengumpulan metrik.
Pastikan Pod berjalan: verifikasi bahwa beban kerja 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 pemakaian resource workload yang diamati.
Penyebab:
- Perubahan perilaku workload: Rekomendasi VerticalPodAutoscaler didasarkan pada penggunaan historis. Perubahan terbaru dalam pola konsumsi aplikasi mungkin belum terlihat.
- Karakteristik workload: tugas atau workload yang berumur pendek dengan pola penggunaan yang sangat tidak teratur mungkin tidak menerima rekomendasi yang optimal.
- Resource VerticalPodAutoscaler yang bertentangan: beberapa resource VerticalPodAutoscaler dapat dikonfigurasi untuk menargetkan workload yang sama.
Resolusi:
- Berikan waktu penyesuaian: beri VerticalPodAutoscaler waktu untuk mempelajari pola penggunaan baru setelah perubahan aplikasi.
- Mengevaluasi kesesuaian: menilai apakah VerticalPodAutoscaler atau Horizontal Pod Autoscaler paling cocok untuk jenis workload.
Periksa apakah ada 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 berkonflik sehingga hanya ada satu VerticalPodAutoscaler yang menargetkan workload tertentu.
Memecahkan masalah update 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.requestsdi manifes Pod tidak diperbarui. - Pod tidak dimulai ulang untuk menerapkan rekomendasi saat menggunakan mode update
AutoatauRecreate.
Penyebab:
- Kolom
updateModeadalahOff: saat kolomspec.updatePolicy.updateModeditetapkan keOff, VerticalPodAutoscaler akan membuat rekomendasi, tetapi tidak menerapkannya. - Workload hanya memiliki satu replika: dalam mode update
AutoatauRecreate, VerticalPodAutoscaler menghindari penghentian paksa workload replika tunggal untuk mencegah downtime.
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 memadai: jika node tidak memiliki kapasitas untuk permintaan resource yang diperbarui, operasi pengubahan ukuran di tempat akan ditangguhkan.
Resolusi:
Memverifikasi status pengubahan ukuran yang ditangguhkan dan kapasitas node:
Jika pengubahan ukuran tetap ditangguhkan selama lebih dari lima menit, VerticalPodAutoscaler akan kembali ke penghapusan dan pembuatan ulang Pod untuk menerapkan rekomendasi. Untuk memeriksa status update yang ditangguhkan, lakukan hal berikut:
Periksa anotasi Pod untuk memeriksa apakah anotasi
vpaInPlaceUpdateddisetel 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 perubahan 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(fallback ke pembuatan ulang).
Langkah berikutnya
Jika Anda tidak dapat menemukan solusi untuk masalah Anda dalam dokumentasi, lihat Mendapatkan dukungan untuk mendapatkan 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 saluran Slack#kubernetes-engineuntuk mendapatkan dukungan komunitas lainnya. - Membuka laporan masalah atau permintaan fitur menggunakan issue tracker publik.