Penskalaan otomatis Pod vertikal mengotomatiskan penetapan permintaan dan batas resource CPU dan memori untuk container dalam Pod Kubernetes. Penskalaan otomatis Pod vertikal menganalisis penggunaan resource historis dan saat ini untuk memberikan rekomendasi, yang dapat ditampilkan atau diterapkan secara otomatis dengan memperbarui Pod. Fitur ini meningkatkan stabilitas dan efisiensi biaya dengan menyesuaikan ukuran alokasi resource.
Sebelum memulai
Sebelum mengonfigurasi Penskalaan Otomatis Pod Vertikal, pastikan Anda memenuhi prasyarat berikut:
- Anda memiliki cluster bare metal yang sedang berjalan.
- Anda memiliki akses
kubectl
ke cluster. - Metrics Server tersedia di cluster. Cluster bare metal menyertakan Metrics Server secara default.
Mengaktifkan penskalaan otomatis Pod vertikal
Aktifkan penskalaan otomatis Pod vertikal di cluster bare metal Anda dengan menyetel anotasi pratinjau dan mengonfigurasi spesifikasi cluster:
Tambahkan atau perbarui anotasi pratinjau pada resource kustom Cluster.
Edit resource kustom Cluster secara langsung atau ubah file konfigurasi cluster dan gunakan
bmctl update
.metadata: annotations: preview.baremetal.cluster.gke.io/vertical-pod-autoscaler: enable
Ubah
spec
resource kustom Cluster untuk menyertakan kolomverticalPodAutoscaling
dan tentukan modeenableUpdater
danenableMemorySaver
:apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: cluster1 namespace: cluster-cluster1 annotations: preview.baremetal.cluster.gke.io/vertical-pod-autoscaler: enable spec: # ... other cluster spec fields verticalPodAutoscaling: enableUpdater: true # Set to true for automated updates enableMemorySaver: true # Set to true to reduce recommender memory usage
Jika Anda mengubah file konfigurasi cluster, terapkan perubahan menggunakan perintah berikut:
bmctl update cluster -c CLUSTER_NAME --kubeconfig KUBECONFIG
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.KUBECONFIG
: jalur file kubeconfig cluster Anda.
Membuat resource kustom VerticalPodAutoscaler
Setelah mengaktifkan penskalaan otomatis Pod vertikal di cluster Anda, tentukan resource kustom VerticalPodAutoscaler
untuk menargetkan workload tertentu:
Tentukan resource
VerticalPodAutoscaler
di namespace yang sama dengan target workload.Resource kustom ini menentukan Pod mana yang ditargetkan menggunakan
targetRef
dan kebijakan resource apa pun.apiVersion: "autoscaling.k8s.io/v1" kind: VerticalPodAutoscaler metadata: name: hamster-vpa spec: targetRef: apiVersion: "apps/v1" kind: Deployment name: hamster resourcePolicy: containerPolicies: - containerName: '*' minAllowed: cpu: 100m memory: 50Mi maxAllowed: cpu: 1 memory: 500Mi controlledResources: ["cpu", "memory"]
Terapkan manifes
VerticalPodAutoscaler
menggunakan perintah berikut:kubectl apply -f VPA_MANIFEST \ --kubeconfig KUBECONFIG
Ganti kode berikut:
VPA_MANIFEST
: jalur file manifesVerticalPodAutoscaler
.KUBECONFIG
: jalur file kubeconfig cluster.
Memahami mode penskalaan otomatis Pod vertikal
Penskalaan otomatis Pod vertikal beroperasi dalam berbagai mode yang mengontrol cara penerapan rekomendasi resource.
Mode rekomendasi
Dalam mode rekomendasi, penskalaan otomatis Pod vertikal menginstal komponen
pemberi rekomendasi. Komponen ini menganalisis penggunaan resource dan memublikasikan nilai yang direkomendasikan untuk permintaan dan batas CPU serta memori di bagian status resource kustom VerticalPodAutoscaler
yang Anda buat.
Untuk melihat rekomendasi permintaan dan batas resource, gunakan perintah berikut:
kubectl describe vpa VPA_NAME \
--kubeconfig KUBECONFIG \
-n CLUSTER_NAMESPACE
Replace the following:
* `VPA_NAME`: the name of the `VerticalPodAutoscaler`
that's targeting the workloads for which you are considering resource
adjustments.
* `KUBECONFIG`: the path of the cluster kubeconfig
file.
* `CLUSTER_NAMESPACE`: the name of the cluster that's
running vertical Pod autoscaling.
Respons harus berisi bagian Status
yang mirip dengan contoh berikut:
Status:
Conditions:
Last Transition Time: 2025-08-04T23:53:32Z
Status: True
Type: RecommendationProvided
Recommendation:
Container Recommendations:
Container Name: hamster
Lower Bound:
Cpu: 100m
Memory: 262144k
Target:
Cpu: 587m
Memory: 262144k
Uncapped Target:
Cpu: 587m
Memory: 262144k
Upper Bound:
Cpu: 1
Memory: 500Mi
Pod tidak diperbarui secara otomatis dalam mode ini. Gunakan rekomendasi ini untuk
memperbarui konfigurasi Pod Anda secara manual. Ini adalah perilaku default jika
enableUpdater
tidak ditetapkan atau false
.
Mode update otomatis
Saat Anda menetapkan
enableUpdater
enableUpdater
ke true
, pengontrol siklus proses bare metal akan men-deploy komponen updater dan pengontrol penerimaan penskalaan otomatis Pod vertikal selain recommender. Updater memantau Pod yang permintaan resource saat ini sangat berbeda dari rekomendasi.
Kebijakan update di resource VerticalPodAutoscaler
menentukan cara
updater menerapkan rekomendasi. Secara default, mode update adalah Auto
,
yang menentukan bahwa updater menetapkan setelan resource yang diupdate pada pembuatan Pod. Contoh VerticalPodAutoscaler
berikut menunjukkan cara menyetel mode pembaruan ke Initial
:
apiVersion: "autoscaling.k8s.io/v1"
kind: VerticalPodAutoscaler
metadata:
name: hamster-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: hamster
resourcePolicy:
updatePolicy:
updateMode: "Initial"
...
Pengupdate mendukung lima mode berikut:
Auto
: Pengupdate mengeluarkan Pod. Pengontrol penerimaan mencegat permintaan pembuatan Pod baru dan mengubahnya untuk menggunakan nilai CPU dan memori yang direkomendasikan oleh pemberi rekomendasi. Mengupdate resource memerlukan pembuatan ulang Pod, yang dapat menyebabkan gangguan. Gunakan Pod Disruption Budgets, yang dipatuhi updater, untuk mengelola proses penghapusan. Mode ini setara denganRecreate
.Recreate
: Updater mengeluarkan Pod dan menetapkan permintaan dan batas resource yang direkomendasikan saat Pod dibuat ulang.InPlaceOrRecreate
(alfa): Updater mencoba update di tempat dengan upaya terbaik, tetapi dapat melakukan penggantian Pod jika update di tempat tidak memungkinkan. Untuk mengetahui informasi selengkapnya, lihat dokumentasi pengubahan ukuran pod di tempat.Initial
: Updater hanya menetapkan permintaan resource saat pembuatan Pod dan tidak pernah mengubahnya nanti.Off
: Updater tidak otomatis mengubah persyaratan resource Pod. Rekomendasi tersebut dihitung dan dapat diperiksa di objekVerticalPodAutoscaler
.
Untuk mengetahui informasi selengkapnya tentang resource kustom VerticalPodAutoscaler
, gunakan
kubectl
untuk mengambil definisi resource kustom verticalpodautoscalercheckpoints.autoscaling.k8s.io
yang diinstal pada cluster versi 1.33.0 atau yang lebih baru.
Contoh berikut menunjukkan cara rekomendasi resource dapat muncul di bagian Status
untuk penampung hamster
. Contoh ini juga menunjukkan contoh peristiwa penghapusan Pod, yang terjadi saat updater menghapus Pod sebelum otomatis menetapkan konfigurasi resource yang direkomendasikan ke Pod yang dibuat ulang:
Spec:
Resource Policy:
Container Policies:
Container Name: *
Controlled Resources:
cpu
memory
Max Allowed:
Cpu: 1
Memory: 500Mi
Min Allowed:
Cpu: 100m
Memory: 50Mi
Target Ref:
API Version: apps/v1
Kind: Deployment
Name: hamster
Update Policy:
Update Mode: Auto
Status:
Conditions:
Last Transition Time: 2025-08-04T23:53:32Z
Status: True
Type: RecommendationProvided
Recommendation:
Container Recommendations:
Container Name: hamster
Lower Bound:
Cpu: 100m
Memory: 262144k
Target:
Cpu: 587m
Memory: 262144k
Uncapped Target:
Cpu: 587m
Memory: 262144k
Upper Bound:
Cpu: 1
Memory: 500Mi
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EvictedPod 49s vpa-updater VPA Updater evicted Pod hamster-7cb59fb657-lkrk4 to apply resource recommendation.
Mode penghemat memori
Mode penghemat memori mengurangi jejak memori komponen pemberi rekomendasi penskalaan otomatis Pod vertikal. Saat Anda menyetel
enableMemorySaver
ke true
, pemberi rekomendasi hanya melacak dan menghitung agregasi untuk Pod yang
memiliki resource kustom VerticalPodAutoscaler
yang cocok.
Sebagai gantinya, saat Anda membuat resource kustom VerticalPodAutoscaler
baru untuk workload yang ada, pemberi rekomendasi memerlukan waktu beberapa saat (hingga 24 jam) untuk mengumpulkan histori yang cukup guna memberikan rekomendasi yang akurat. Mode
ini adalah false
secara default untuk sebagian besar jenis cluster, tetapi defaultnya adalah true
untuk
cluster edge.
Menonaktifkan Penskalaan Otomatis Pod Vertikal
Nonaktifkan Penskalaan Otomatis Pod Vertikal dengan menghapus resource kustom dan konfigurasinya dari cluster Anda:
Hapus resource kustom
VerticalPodAutoscaler
yang telah Anda buat.Ubah resource kustom Cluster dan hapus seluruh bagian
verticalPodAutoscaling
darispec
.Anda dapat mengedit resource kustom Cluster secara langsung atau mengubah file konfigurasi cluster dan menggunakan
bmctl update
.Hapus anotasi
preview.baremetal.cluster.gke.io/vertical-pod-autoscaler
dari resource kustom Cluster.
Batasan
Pertimbangkan batasan berikut saat menggunakan Penskalaan Otomatis Pod Vertikal:
- Penskalaan otomatis Pod vertikal belum siap digunakan untuk workload berbasis JVM karena visibilitas yang terbatas ke penggunaan memori aktual workload.
- Updater memerlukan minimal dua replika Pod untuk Deployment guna mengganti Pod dengan nilai resource yang direvisi.
- Updater tidak memperbarui Pod yang mengalami loop error dengan cepat karena error Kehabisan Memori (OOM).
- Kebijakan update
InPlaceOrRecreate
untuk Pod adalah fitur alfa dalam penskalaan otomatis Pod vertikal. Proses ini mencoba update di tempat dengan upaya terbaik, tetapi dapat melakukan penggantian Pod jika update di tempat tidak memungkinkan.
Langkah berikutnya
- Jelajahi Anggaran Gangguan Pod.