Autoscaling Pod Vertikal di Azure Kubernetes Service (AKS)
Artikel ini memberikan gambaran umum tentang Vertical Pod Autoscaler (VPA) di Azure Kubernetes Service (AKS), yang didasarkan pada versi sumber terbuka Kubernetes. Saat dikonfigurasi, kontainer secara otomatis menetapkan permintaan dan batasan sumber daya pada kontainer per beban kerja berdasarkan penggunaan sebelumnya. VPA membebaskan CPU dan Memori untuk pod lain dan membantu memanfaatkan kluster AKS Anda secara efektif.
Penskalaan otomatis Pod Vertikal memberikan rekomendasi untuk penggunaan sumber daya dari waktu ke waktu. Untuk mengelola peningkatan penggunaan sumber daya secara tiba-tiba, gunakan Horizontal Pod Autoscaler, yang menskalakan jumlah replika pod sesuai kebutuhan.
Keuntungan
Penskala Otomatis Pod Vertikal memberikan manfaat berikut:
Ini menganalisis dan menyesuaikan sumber daya prosesor dan memori untuk mengukur aplikasi Anda dengan tepat. VPA tidak hanya bertanggung jawab untuk meningkatkan skala, tetapi juga untuk menurunkan skala berdasarkan penggunaan sumber daya mereka dari waktu ke waktu.
Sebuah pod dikeluarkan jika perlu mengubah permintaan sumber dayanya jika mode penskalaannya diatur ke otomatis atau dibuat ulang.
Mengatur batasan CPU dan memori untuk kontainer individual dengan menentukan kebijakan sumber daya
Memastikan simpul memiliki sumber daya yang benar untuk penjadwalan pod
Pengelogan yang dapat dikonfigurasi dari setiap penyesuaian pada sumber daya prosesor atau memori yang dibuat
Meningkatkan pemanfaatan sumber daya kluster dan membebaskan CPU dan memori untuk pod lain.
Pembatasan
Penskalaan otomatis Pod Vertikal mendukung maksimum 1.000 pod yang terkait dengan
VerticalPodAutoscaler
objek per kluster.VPA mungkin merekomendasikan lebih banyak sumber daya daripada yang tersedia di kluster. Akibatnya, ini mencegah pod ditetapkan ke simpul dan berjalan, karena simpul tidak memiliki sumber daya yang memadai. Anda dapat mengatasi batasan ini dengan mengatur LimitRange ke sumber daya maksimum yang tersedia per namespace, yang memastikan pod tidak meminta lebih banyak sumber daya daripada yang ditentukan. Selain itu, Anda dapat mengatur rekomendasi sumber daya maksimum yang diizinkan per pod dalam objek
VerticalPodAutoscaler
. Ketahuilah bahwa VPA tidak dapat sepenuhnya mengatasi masalah sumber daya simpul yang tidak memadai. Rentang batas diperbaiki, tetapi penggunaan sumber daya simpul diubah secara dinamis.Kami tidak merekomendasikan penggunaan Vertical Pod Autoscaler dengan Horizontal Pod Autoscaler, yang menskalakan berdasarkan metrik penggunaan CPU dan memori yang sama.
Pemberi Rekomendasi VPA hanya menyimpan hingga delapan hari data historis.
VPA tidak mendukung beban kerja berbasis JVM karena visibilitas terbatas ke penggunaan memori aktual beban kerja.
Tidak disarankan atau didukung untuk menjalankan implementasi VPA Anda sendiri bersama implementasi VPA terkelola ini. Memiliki pemberi rekomendasi tambahan atau disesuaikan didukung.
Kontainer AKS Windows tidak didukung.
Sebelum Anda mulai
Kluster AKS menjalankan Kubernetes versi 1.24 dan yang lebih tinggi.
Azure CLI versi 2.52.0 atau yang lebih baru diinstal dan dikonfigurasi. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.kubectl
harus terhubung ke kluster yang ingin Anda instal VPA.
Gambaran umum VPA
Objek API
Penskala Otomatis Pod Vertikal adalah sumber daya API dalam grup API penskalan otomatis Kubernetes. Versi yang didukung adalah 0.11 dan lebih tinggi, dan dapat ditemukan di repositori autoscaler Kubernetes.
Objek VPA terdiri dari tiga komponen:
Pemberi rekomendasi - ini memantau konsumsi sumber daya saat ini dan sebelumnya dan, berdasarkan itu, memberikan nilai yang direkomendasikan untuk cpu kontainer dan permintaan/batas memori. Pemberi Rekomendasi memantau riwayat metrik, peristiwa Kehabisan Memori (OOM), dan spesifikasi penyebaran VPA, dan menyarankan permintaan yang adil. Dengan menyediakan permintaan sumber daya dan konfigurasi batas yang tepat, batas dinaikkan dan diturunkan.
Updater - memeriksa pod terkelola mana yang memiliki sumber daya yang benar yang ditetapkan dan, jika tidak, membunuhnya sehingga dapat dibuat ulang oleh pengontrol mereka dengan permintaan yang diperbarui.
Pengontrol Penerimaan VPA - ini mengatur permintaan sumber daya yang benar pada pod baru (dibuat atau dibuat ulang oleh pengontrol mereka karena aktivitas Updater).
Pengontrol penerimaan VPA
Pengontrol penerimaan VPA adalah biner yang mendaftarkan dirinya sebagai Webhook Penerimaan Bermutasi. Dengan setiap pod yang dibuat, ia mendapatkan permintaan dari apiserver dan mengevaluasi apakah ada konfigurasi VPA yang cocok, atau menemukan yang sesuai dan menggunakan rekomendasi saat ini untuk mengatur permintaan sumber daya di pod.
Pekerjaan mandiri berjalan di luar pengontrol penerimaan VPA, yang disebut overlay-vpa-cert-webhook-check
. overlay-vpa-cert-webhook-check
digunakan untuk membuat dan memperbarui sertifikat, dan mendaftarkan pengontrol penerimaan VPA sebagai MutatingWebhookConfiguration
.
Untuk ketersediaan tinggi, AKS mendukung dua replika pengontrol penerimaan.
Mode operasi objek VPA
Sumber daya Penskala Otomatis Pod Vertikal dimasukkan untuk setiap pengontrol yang ingin Anda komputasi persyaratan sumber daya secara otomatis. Ini adalah penyebaran yang paling umum. Ada empat mode di mana VPU beroperasi:
Auto
- VPA menetapkan permintaan sumber daya selama pembuatan pod dan memperbarui pod yang ada menggunakan mekanisme pembaruan pilihan. Saat ini,Auto
setara denganRecreate
, dan juga merupakan mode default. Setelah pembaruan permintaan pod gratis ("di tempat") tersedia, pembaruan tersebut dapat digunakan sebagai mekanisme pembaruan yang disukai olehAuto
mode . Saat menggunakanRecreate
mode, VPA mengeluarkan pod jika perlu mengubah permintaan sumber dayanya. Ini dapat menyebabkan pod dimulai ulang sekaligus, sehingga menyebabkan inkonsistensi aplikasi. Anda dapat membatasi restart dan mempertahankan konsistensi dalam situasi ini dengan menggunakan PodDisruptionBudget.Recreate
- VPA menetapkan permintaan sumber daya selama pembuatan pod serta memperbarui pod yang ada dengan mengeluarkannya ketika sumber daya yang diminta berbeda secara signifikan dari rekomendasi baru (sehubungan dengan Anggaran Gangguan Pod, jika ditentukan). Mode ini jarang digunakan, hanya jika Anda perlu memastikan bahwa pod dimulai ulang setiap kali permintaan sumber daya berubah. Jika tidak,Auto
mode lebih disukai, yang dapat memanfaatkan pembaruan bebas hidupkan ulang setelah tersedia.Initial
- VPA hanya menetapkan permintaan sumber daya selama pembuatan pod dan tidak pernah berubah setelahnya.Off
- VPA tidak secara otomatis mengubah persyaratan sumber daya pod. Rekomendasi dihitung dan dapat diperiksa di objek VPA.
Pola penyebaran selama pengembangan aplikasi
Pola penyebaran umum yang direkomendasikan untuk Anda jika Anda tidak terbiasa dengan VPA adalah melakukan langkah-langkah berikut selama pengembangan aplikasi untuk mengidentifikasi karakteristik pemanfaatan sumber daya uniknya, menguji VPA untuk memverifikasi bahwa VPA berfungsi dengan baik, dan menguji bersama komponen Kubernetes lainnya untuk mengoptimalkan pemanfaatan sumber daya kluster.
Atur UpdateMode = "Off" di kluster produksi Anda dan jalankan VPA dalam mode rekomendasi sehingga Anda dapat menguji dan mendapatkan keakraban dengan VPA. UpdateMode = "Off" dapat menghindari pengenalan kesalahan konfigurasi yang dapat menyebabkan pemadaman.
Tetapkan pengamatan terlebih dahulu dengan mengumpulkan telemetri pemanfaatan sumber daya aktual selama periode waktu tertentu. Ini membantu Anda memahami perilaku dan tanda-tanda gejala atau masalah dari sumber daya kontainer dan pod yang dipengaruhi oleh beban kerja yang berjalan pada mereka.
Kenali data pemantauan untuk memahami karakteristik performa. Berdasarkan wawasan ini, atur permintaan/batas yang diinginkan sesuai dan kemudian dalam penyebaran atau peningkatan berikutnya
Atur
updateMode
nilai keAuto
,Recreate
, atauInitial
tergantung pada kebutuhan Anda.
Menyebarkan, meningkatkan, atau menonaktifkan VPA pada kluster
Di bagian ini, Anda menyebarkan, meningkatkan, atau menonaktifkan Penskala Otomatis Pod Vertikal pada kluster Anda.
Untuk mengaktifkan VPA pada kluster baru, gunakan
--enable-vpa
parameter dengan perintah az aks create .az aks create -n myAKSCluster -g myResourceGroup --enable-vpa
Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.
Secara opsional, untuk mengaktifkan VPA pada kluster yang ada, gunakan
--enable-vpa
dengan perintah [https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update].az aks update -n myAKSCluster -g myResourceGroup --enable-vpa
Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.
Secara opsional, untuk menonaktifkan VPA pada kluster yang ada, gunakan
--disable-vpa
dengan perintah [https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update].az aks update -n myAKSCluster -g myResourceGroup --disable-vpa
Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.
Untuk memverifikasi bahwa pod Penskala Otomatis Pod Vertikal telah berhasil dibuat, gunakan perintah kubectl get .
kubectl get pods -n kube-system
Output perintah mencakup hasil berikut khusus untuk pod VPA. Pod harus menunjukkan status berjalan.
NAME READY STATUS RESTARTS AGE
vpa-admission-controller-7867874bc5-vjfxk 1/1 Running 0 41m
vpa-recommender-5fd94767fb-ggjr2 1/1 Running 0 41m
vpa-updater-56f9bfc96f-jgq2g 1/1 Running 0 41m
Menguji penginstalan Vertical Pod Autoscaler Anda
Langkah-langkah berikut membuat penyebaran dengan dua pod, masing-masing menjalankan satu kontainer yang meminta 100 milimeter dan mencoba menggunakan sedikit di atas 500 miliore. Juga konfigurasi VPA dibuat, menunjuk pada penyebaran. VPA mengamati perilaku pod, dan setelah sekitar lima menit, mereka diperbarui dengan permintaan CPU yang lebih tinggi.
Buat file bernama
hamster.yaml
dan salin dalam manifes berikut dari contoh Vertical Pod Autoscaler dari repositori GitHub kubernetes/autoscaler .Sebarkan
hamster.yaml
contoh Penskala Otomatis Pod Vertikal menggunakan perintah kubectl apply dan tentukan nama manifes YAML Anda:kubectl apply -f hamster.yaml
Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.
Jalankan perintah kubectl get berikut untuk mendapatkan pod dari aplikasi contoh hamster:
kubectl get pods -l app=hamster
Contoh output menyerupai berikut ini:
hamster-78f9dcdd4c-hf7gk 1/1 Running 0 24s hamster-78f9dcdd4c-j9mc7 1/1 Running 0 24s
Gunakan perintah kubectl describe pada salah satu pod untuk melihat reservasi CPU dan memorinya. Ganti "exampleID" dengan salah satu ID pod yang dikembalikan dalam output Anda dari langkah sebelumnya.
kubectl describe pod hamster-exampleID
Contoh output adalah cuplikan informasi tentang kluster:
hamster: Container ID: containerd:// Image: k8s.gcr.io/ubuntu-slim:0.1 Image ID: sha256: Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Wed, 28 Sep 2022 15:06:14 -0400 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 50Mi Environment: <none>
Pod memiliki 100 milicpu dan 50 Mibibyte memori yang dicadangkan dalam contoh ini. Untuk aplikasi sampel ini, pod membutuhkan kurang dari 100 milikpu untuk dijalankan, sehingga tidak ada kapasitas CPU yang tersedia. Pod juga mencadangkan memori yang jauh lebih sedikit daripada yang diperlukan. Penyebaran vertical Pod Autoscaler vpa-recommender menganalisis pod yang menghosting aplikasi hamster untuk melihat apakah persyaratan CPU dan memori sesuai. Jika penyesuaian diperlukan, vpa-updater akan menjalankan kembali pod dengan nilai yang diperbarui.
Tunggu hingga vpa-updater meluncurkan pod hamster baru, yang seharusnya memakan waktu beberapa menit. Anda dapat memantau pod menggunakan perintah kubectl get .
kubectl get --watch pods -l app=hamster
Ketika pod hamster baru dimulai, jelaskan pod yang menjalankan perintah kubectl describe dan lihat reservasi CPU dan memori yang diperbarui.
kubectl describe pod hamster-<exampleID>
Contoh output adalah cuplikan informasi yang menjelaskan pod:
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none>
Pada output sebelumnya, Anda dapat melihat bahwa reservasi CPU meningkat menjadi 587 milikpu, yang lebih dari lima kali nilai asli. Memori meningkat menjadi 262.144 Kilobyte, yaitu sekitar 250 Mibibyte, atau lima kali nilai asli. Pod ini kurang bersumber daya, dan Penskala Otomatis Pod Vertikal mengoreksi perkiraan dengan nilai yang jauh lebih tepat.
Untuk melihat rekomendasi yang diperbarui dari VPA, jalankan perintah kubectl describe untuk menjelaskan informasi sumber daya hamster-vpa.
kubectl describe vpa/hamster-vpa
Contoh output adalah cuplikan informasi tentang pemanfaatan sumber daya:
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none>
Mengatur permintaan Penskala Otomatis Pod
Autoscaling Pod Vertikal menggunakan VerticalPodAutoscaler
objek untuk secara otomatis mengatur permintaan sumber daya pada pod ketika updateMode diatur ke Auto. Anda dapat menetapkan nilai yang berbeda tergantung pada kebutuhan dan pengujian Anda. Dalam contoh ini, updateMode diatur ke Recreate
.
Aktifkan VPA untuk kluster Anda dengan menjalankan perintah berikut. Ganti nama
myAKSCluster
kluster dengan nama kluster AKS Anda dan gantimyResourceGroup
dengan nama grup sumber daya tempat kluster dihosting.az aks update -n myAKSCluster -g myResourceGroup --enable-vpa
Buat file bernama
azure-autodeploy.yaml
, dan salin dalam manifes berikut.apiVersion: apps/v1 kind: Deployment metadata: name: vpa-auto-deployment spec: replicas: 2 selector: matchLabels: app: vpa-auto-deployment template: metadata: labels: app: vpa-auto-deployment spec: containers: - name: mycontainer image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 50Mi command: ["/bin/sh"] args: ["-c", "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done"]
Manifes ini menjelaskan penyebaran yang memiliki dua pod. Setiap pod memiliki satu kontainer yang meminta memori 100 miliCPU dan 50 MiB.
Buat pod dengan perintah kubectl create , seperti yang ditunjukkan pada contoh berikut:
kubectl create -f azure-autodeploy.yaml
Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.
Jalankan perintah kubectl get berikut untuk mendapatkan pod:
kubectl get pods
Output menyerupai contoh berikut yang menunjukkan nama dan status pod:
NAME READY STATUS RESTARTS AGE vpa-auto-deployment-54465fb978-kchc5 1/1 Running 0 52s vpa-auto-deployment-54465fb978-nhtmj 1/1 Running 0 52s
Buat file bernama
azure-vpa-auto.yaml
, dan salin dalam manifes berikut yang menjelaskanVerticalPodAutoscaler
:apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: vpa-auto spec: targetRef: apiVersion: "apps/v1" kind: Deployment name: vpa-auto-deployment updatePolicy: updateMode: "Recreate"
Nilai
targetRef.name
menentukan bahwa pod apa pun yang dikontrol oleh penyebaran bernamavpa-auto-deployment
milikVerticalPodAutoscaler
. NilaiupdateMode
Recreate
berarti bahwa pengontrol Vertikal Pod Autoscaler dapat menghapus pod, menyesuaikan permintaan CPU dan memori, lalu membuat pod baru.Terapkan manifes ke kluster menggunakan perintah kubectl apply :
kubectl create -f azure-vpa-auto.yaml
Tunggu beberapa menit, dan lihat pod yang sedang berjalan lagi dengan menjalankan perintah kubectl get berikut:
kubectl get pods
Output menyerupai contoh berikut yang menunjukkan nama pod telah berubah dan status pod:
NAME READY STATUS RESTARTS AGE vpa-auto-deployment-54465fb978-qbhc4 1/1 Running 0 2m49s vpa-auto-deployment-54465fb978-vbj68 1/1 Running 0 109s
Dapatkan informasi terperinci tentang salah satu pod yang sedang berjalan dengan menggunakan perintah Kubectl get . Ganti
podName
dengan nama salah satu pod yang anda ambil pada langkah sebelumnya.kubectl get pod podName --output yaml
Output menyerupai contoh berikut, menunjukkan bahwa pengontrol Penskala Otomatis Pod Vertikal telah meningkatkan permintaan memori menjadi 262144k dan permintaan CPU menjadi 25 miliCPU.
apiVersion: v1 kind: Pod metadata: annotations: vpaObservedContainers: mycontainer vpaUpdates: 'Pod resources updated by vpa-auto: container 0: cpu request, memory request' creationTimestamp: "2022-09-29T16:44:37Z" generateName: vpa-auto-deployment-54465fb978- labels: app: vpa-auto-deployment spec: containers: - args: - -c - while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done command: - /bin/sh image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine imagePullPolicy: IfNotPresent name: mycontainer resources: requests: cpu: 25m memory: 262144k
Untuk mendapatkan informasi terperinci tentang Penskala Otomatis Pod Vertikal dan rekomendasinya untuk CPU dan memori, gunakan perintah kubectl get :
kubectl get vpa vpa-auto --output yaml
Output menyerupai contoh berikut:
recommendation: containerRecommendations: - containerName: mycontainer lowerBound: cpu: 25m memory: 262144k target: cpu: 25m memory: 262144k uncappedTarget: cpu: 25m memory: 262144k upperBound: cpu: 230m memory: 262144k
Hasilnya menunjukkan
target
atribut menentukan bahwa agar kontainer berjalan secara optimal, tidak perlu mengubah CPU atau target memori. Hasil Anda dapat bervariasi di mana rekomendasi CPU dan memori target lebih tinggi.Autoscaler Pod Vertikal menggunakan
lowerBound
atribut danupperBound
untuk memutuskan apakah akan menghapus pod dan menggantinya dengan pod baru. Jika pod memiliki permintaan yang kurang dari batas bawah atau lebih besar dari batas atas, Penskala Otomatis Pod Vertikal menghapus pod dan menggantinya dengan pod yang memenuhi atribut target.
Pemberi Rekomendasi Tambahan untuk Autoscaler Pod Vertikal
Di VPA, salah satu komponen inti adalah Pemberi Rekomendasi. Ini memberikan rekomendasi untuk penggunaan sumber daya berdasarkan konsumsi sumber daya real time. AKS menyebarkan pemberi rekomendasi saat kluster mengaktifkan VPA. Anda dapat menyebarkan pemberi rekomendasi yang disesuaikan atau pemberi rekomendasi tambahan dengan gambar yang sama dengan yang default. Manfaat memiliki pemberi rekomendasi yang disesuaikan adalah Anda dapat menyesuaikan logika rekomendasi Anda. Dengan pemberi rekomendasi tambahan, Anda dapat mempartisi VPA ke beberapa pemberi rekomendasi jika ada banyak objek VPA.
Contoh berikut adalah pemberi rekomendasi tambahan yang Anda terapkan ke kluster AKS yang ada. Anda kemudian mengonfigurasi objek VPA untuk menggunakan pemberi rekomendasi tambahan.
Buat file bernama
extra_recommender.yaml
dan salin dalam manifes berikut:apiVersion: apps/v1 kind: Deployment metadata: name: extra-recommender namespace: kube-system spec: replicas: 1 selector: matchLabels: app: extra-recommender template: metadata: labels: app: extra-recommender spec: serviceAccountName: vpa-recommender securityContext: runAsNonRoot: true runAsUser: 65534 # nobody containers: - name: recommender image: registry.k8s.io/autoscaling/vpa-recommender:0.13.0 imagePullPolicy: Always args: - --recommender-name=extra-recommender resources: limits: cpu: 200m memory: 1000Mi requests: cpu: 50m memory: 500Mi ports: - name: prometheus containerPort: 8942
Sebarkan
extra-recomender.yaml
contoh Autoscaler Pod Vertikal menggunakan perintah kubectl apply dan tentukan nama manifes YAML Anda.kubectl apply -f extra-recommender.yaml
Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.
Buat file bernama
hamnster_extra_recommender.yaml
dan salin dalam manifes berikut:apiVersion: "autoscaling.k8s.io/v1" kind: VerticalPodAutoscaler metadata: name: hamster-vpa spec: recommenders: - name: 'extra-recommender' targetRef: apiVersion: "apps/v1" kind: Deployment name: hamster updatePolicy: updateMode: "Auto" resourcePolicy: containerPolicies: - containerName: '*' minAllowed: cpu: 100m memory: 50Mi maxAllowed: cpu: 1 memory: 500Mi controlledResources: ["cpu", "memory"] --- apiVersion: apps/v1 kind: Deployment metadata: name: hamster spec: selector: matchLabels: app: hamster replicas: 2 template: metadata: labels: app: hamster spec: securityContext: runAsNonRoot: true runAsUser: 65534 # nobody containers: - name: hamster image: k8s.gcr.io/ubuntu-slim:0.1 resources: requests: cpu: 100m memory: 50Mi command: ["/bin/sh"] args: - "-c" - "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done"
Jika
memory
tidak ditentukan dalamcontrolledResources
, Pemberi Rekomendasi tidak merespons peristiwa OOM. Dalam hal ini, Anda hanya mengatur CPU dicontrolledValues
.controlledValues
memungkinkan Anda untuk memilih apakah akan memperbarui permintaan sumber daya kontainer berdasarkanRequestsOnly
opsi, atau permintaan dan batas sumber daya menggunakanRequestsAndLimits
opsi . Nilai defaultnya adalahRequestsAndLimits
. Jika Anda menggunakan opsi ,RequestsAndLimits
permintaan dihitung berdasarkan penggunaan aktual, dan batasan dihitung berdasarkan rasio permintaan dan batas pod saat ini.Misalnya, jika Anda memulai dengan pod yang meminta 2 CPU dan membatasi 4 CPU, VPA selalu menetapkan batas menjadi dua kali lipat dari permintaan. Prinsip yang sama berlaku untuk memori. Saat Anda menggunakan mode ini
RequestsAndLimits
, mode ini dapat berfungsi sebagai cetak biru untuk permintaan dan batas sumber daya aplikasi awal Anda.
Anda dapat menyederhanakan objek VPA dengan menggunakan mode Otomatis dan rekomendasi komputasi untuk CPU dan Memori.
Sebarkan
hamster_extra-recomender.yaml
contoh menggunakan perintah kubectl apply dan tentukan nama manifes YAML Anda.kubectl apply -f hamster_customized_recommender.yaml
Tunggu hingga vpa-updater meluncurkan pod hamster baru, yang seharusnya memakan waktu beberapa menit. Anda dapat memantau pod menggunakan perintah kubectl get .
kubectl get --watch pods -l app=hamster
Ketika pod hamster baru dimulai, jelaskan pod yang menjalankan perintah kubectl describe dan lihat reservasi CPU dan memori yang diperbarui.
kubectl describe pod hamster-<exampleID>
Contoh output adalah cuplikan informasi yang menjelaskan pod:
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none>
Untuk melihat rekomendasi yang diperbarui dari VPA, jalankan perintah kubectl describe untuk menjelaskan informasi sumber daya hamster-vpa.
kubectl describe vpa/hamster-vpa
Contoh output adalah cuplikan informasi tentang pemanfaatan sumber daya:
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none> Spec: recommenders: Name: customized-recommender
Pemecahan Masalah
Untuk mendiagnosis masalah dengan penginstalan VPA, lakukan langkah-langkah berikut.
Periksa apakah semua komponen sistem berjalan menggunakan perintah berikut:
kubectl --namespace=kube-system get pods|grep vpa
Output harus mencantumkan tiga pod - pemberi rekomendasi, updater, dan admission-controller semuanya dengan status yang menunjukkan status Running
.
Konfirmasikan apakah komponen sistem mencatat kesalahan apa pun. Untuk setiap pod yang dikembalikan oleh perintah sebelumnya, jalankan perintah berikut:
kubectl --namespace=kube-system logs [pod name] | grep -e '^E[0-9]\{4\}'
Konfirmasikan bahwa definisi sumber daya kustom dibuat dengan menjalankan perintah berikut:
kubectl get customresourcedefinition | grep verticalpodautoscalers
Langkah berikutnya
Artikel ini menunjukkan kepada Anda cara menskalakan pemanfaatan sumber daya secara otomatis, seperti CPU dan memori, node kluster agar sesuai dengan persyaratan aplikasi.
Anda juga dapat menggunakan autoscaler pod horizontal untuk menyesuaikan jumlah pod yang menjalankan aplikasi Anda secara otomatis. Untuk langkah-langkah menggunakan autoscaler pod horizontal, lihat Menskalakan aplikasi di AKS.
Lihat Vertical Pod Autoscaler [referensi API] untuk mempelajari selengkapnya tentang definisi untuk objek VPA terkait.