Aktifkan Horizontal Pod Autoscaler (HPA) untuk secara otomatis menskalakan pod berdasarkan pemanfaatan CPU, penggunaan memori, atau metrik kustom. HPA menambah jumlah replika pod guna menangani lonjakan lalu lintas dan menguranginya selama periode idle demi menghemat resource. Fitur ini ideal untuk aplikasi dengan beban kerja fluktuatif yang memerlukan penskalaan sering, seperti platform e-commerce, layanan pendidikan daring, dan aplikasi keuangan.
Sebelum memulai
Untuk menggunakan HPA secara efektif, kami menyarankan Anda membaca dokumentasi resmi Kubernetes tentang Horizontal Pod Autoscaling guna memahami prinsip dasar, algoritma, serta perilaku penskalaan yang dapat dikonfigurasi.
Selain itu, kluster Alibaba Cloud Container Service for Kubernetes (ACK) menyediakan berbagai solusi workload scaling (elastisitas lapisan penjadwalan) dan node scaling (elastisitas lapisan resource). Sebelum melanjutkan, baca Auto scaling untuk memahami kasus penggunaan dan batasan masing-masing solusi.
Prasyarat
-
Anda telah membuat ACK managed cluster atau ACK dedicated cluster. Untuk informasi lebih lanjut, lihat Create a Kubernetes cluster.
-
Jika Anda menggunakan perintah kubectl untuk menerapkan HPA, Anda harus terhubung ke kluster Kubernetes dengan kubectl. Untuk informasi lebih lanjut, lihat Obtain the KubeConfig of a cluster and use kubectl to connect to the cluster.
Buat aplikasi HPA di console
ACK terintegrasi dengan HPA, memungkinkan Anda membuat aplikasi yang mendukung HPA langsung dari console. Anda dapat mengaktifkan HPA saat membuat aplikasi baru atau pada aplikasi yang sudah ada. Kami menyarankan hanya membuat satu HPA per workload.
Aktifkan HPA saat membuat aplikasi
Contoh berikut menggunakan Deployment untuk menunjukkan cara mengaktifkan HPA saat membuat aplikasi. Langkah-langkah untuk jenis workload lainnya serupa.
-
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Deployments, klik Create from Image.
-
Pada halaman Create, ikuti petunjuk di layar untuk mengonfigurasi informasi dasar aplikasi, kontainer, layanan, dan penskalaan guna membuat Deployment yang mendukung HPA.
Untuk langkah-langkah detail dan deskripsi parameter, lihat Create a stateless workload (Deployment). Bagian berikut hanya menjelaskan parameter utama.
-
Basic Information: Konfigurasikan pengaturan aplikasi, seperti nama dan jumlah replika.
-
Container: Konfigurasikan image serta resource CPU dan memori yang dibutuhkan.
Fitur Resource profiling menganalisis penggunaan resource historis dan memberikan rekomendasi untuk mengonfigurasi Requests dan Limits kontainer. Untuk informasi lebih lanjut, lihat Resource profiling.
PentingAnda harus menetapkan resource Requests untuk aplikasi agar HPA dapat diaktifkan.
-
Advanced Settings:
-
Pada bagian Scaling, pilih HPA's Enable, lalu konfigurasikan kondisi dan parameter penskalaan.
-
Metric: Metrik yang didukung adalah CPU dan memori. Metrik harus sesuai dengan jenis resource yang Anda tetapkan. Jika Anda menentukan kedua jenis resource (CPU dan memori), HPA akan melakukan operasi penskalaan ketika salah satu metrik mencapai ambang batas penskalaannya.
-
Trigger Condition: Ambang batas pemanfaatan resource, dinyatakan dalam persentase. Ketika pemanfaatan resource melebihi ambang ini, kontainer akan diskalakan keluar. Untuk informasi lebih lanjut tentang algoritma Horizontal Pod Autoscaling, lihat Algorithm details.
-
Max. Replicas: Jumlah maksimum replika yang dapat dicapai oleh Deployment saat diskalakan keluar. Nilai ini harus lebih besar dari jumlah replika minimum.
-
Min. Replicas: Jumlah minimum replika untuk Deployment. Nilainya harus bilangan bulat yang lebih besar dari atau sama dengan 1.
-
-
Setelah pembuatan selesai, Anda dapat melihat Deployment yang telah dibuat di halaman Deployments. Klik nama Deployment tersebut, lalu pada halaman detail Deployment, klik tab Pod Scaling. Di bagian ini, Anda dapat melihat metrik terkait aktivitas HPA, seperti pemanfaatan CPU atau memori serta jumlah replika maksimum atau minimum, serta mengelola HPA dengan memperbarui konfigurasinya atau menonaktifkannya.
-
Aktifkan HPA untuk aplikasi yang sudah ada
Contoh ini menunjukkan cara mengaktifkan HPA untuk Deployment yang sudah ada. Langkah-langkah untuk jenis workload lainnya serupa.
Halaman Workload
-
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Deployments, klik nama aplikasi target, klik tab Pod Scaling, lalu klik Create di area HPA.
-
Pada kotak dialog Create, konfigurasikan pengaturan penskalaan sesuai petunjuk di layar.
-
Name: Nama kebijakan HPA.
-
Metric: Klik Add.
-
Metric Name: Mendukung CPU dan memori. Metrik harus sesuai dengan jenis resource yang telah Anda konfigurasi. Jika Anda menentukan CPU dan memori, HPA akan melakukan operasi penskalaan segera setelah salah satu metrik mencapai ambang batas penskalaannya.
-
Threshold: Persentase pemanfaatan resource di atas mana kontainer mulai diskalakan keluar. Untuk informasi lebih lanjut tentang algoritma Horizontal Pod Autoscaling, lihat Algorithm details.
-
-
-
Max. Containers: Jumlah maksimum replika yang dapat dicapai oleh Deployment saat diskalakan keluar. Nilai ini harus lebih besar dari jumlah replika minimum.
-
Min. Containers: Jumlah minimum kontainer yang dapat dicapai oleh Deployment saat diskalakan turun. Nilainya harus bilangan bulat yang lebih besar dari atau sama dengan 1.
Setelah konfigurasi selesai, Anda dapat mengklik nama Deployment di halaman Stateless Application, lalu klik tab Pod Scaling pada halaman detail Deployment. Di area ini, Anda dapat melihat metrik terkait aktivitas HPA, seperti pemanfaatan CPU atau memori serta jumlah replika maksimum atau minimum, serta mengelola HPA dengan memperbarui konfigurasinya atau menonaktifkannya.
Halaman Workload Scaling
Halaman ini hanya tersedia untuk pengguna yang masuk daftar allowlist. Untuk meminta akses, submit a ticket.
-
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workload Scaling.
-
Di pojok kanan atas halaman, klik Create Auto Scaling, lalu klik tab HPA and CronHPA. Pilih workload target, lalu pada bagian Configure Auto Scaling Policy, pilih HPA dan konfigurasikan kebijakan HPA sesuai petunjuk.
-
Scaling Policy Name: Nama kebijakan HPA.
-
Min. Containers: Jumlah minimum replika untuk workload. Nilai ini harus bilangan bulat yang lebih besar dari atau sama dengan 1.
-
Max. Containers: Jumlah maksimum kontainer yang dapat dicapai oleh workload saat diskalakan keluar. Nilai ini harus lebih besar dari jumlah replika minimum.
-
Metric Name: Metrik yang didukung mencakup CPU, GPU, memori, permintaan Nginx Ingress, dan metrik kustom. Jenis metrik harus sesuai dengan jenis resource yang ditentukan. Jika Anda menentukan beberapa metrik, Horizontal Pod Autoscaler (HPA) akan melakukan operasi penskalaan ketika salah satu metrik mencapai ambang batasnya.
-
Threshold: Persentase pemanfaatan resource. Jika pemanfaatan melebihi nilai ini, kontainer mulai diskalakan keluar. Untuk informasi lebih lanjut tentang algoritma Horizontal Pod Autoscaling, lihat Algorithm details.
-
Setelah pembuatan selesai, Anda dapat melihat daftar HPA di halaman Workload Scaling. Pada kolom Actions, Anda dapat melihat metrik terkait aktivitas HPA, seperti pemanfaatan resource serta jumlah replika maksimum atau minimum, serta mengelola HPA dengan memperbarui konfigurasinya atau menonaktifkannya.
Verifikasi hasil
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workload Scaling.
-
Klik tab Horizontal Scaling, lalu pilih HPA untuk melihat status penskalaan dan daftar tugas.
Di lingkungan produksi, aplikasi diskalakan berdasarkan beban pod. Anda juga dapat menjalankan uji stres pada pod di lingkungan pengujian untuk memverifikasi perilaku penskalaan horizontal.
Buat aplikasi HPA menggunakan kubectl
Anda juga dapat menggunakan template orkestrasi untuk membuat HPA secara manual dan mengikatnya ke Deployment target. Kami menyarankan hanya membuat satu HPA per workload. Contoh ini menunjukkan cara menerapkan aplikasi Nginx yang mendukung HPA.
-
Buat file bernama nginx.yml dan salin konten berikut ke dalamnya.
PentingUntuk menerapkan HPA, Anda harus menetapkan resource
requestuntuk Pod. Jika tidak, HPA tidak dapat berjalan. Anda dapat menggunakan fitur resource profiling untuk menganalisis data penggunaan resource historis dan mendapatkan rekomendasi untuk mengonfigurasi Requests dan Limits kontainer. Untuk informasi lebih lanjut, lihat Resource profiling. -
Jalankan perintah berikut untuk membuat aplikasi Nginx.
kubectl apply -f nginx.yml -
Buat file bernama hpa.yml dan salin konten berikut ke dalamnya untuk membuat HPA.
Gunakan
scaleTargetRefuntuk menentukan objek target untuk HPA. Dalam contoh ini, HPA diikat ke Deployment bernamanginxdan memicu operasi penskalaan ketika rata-rata pemanfaatan CPU kontainer di semua Pod mencapai 50%.Kubernetes 1.24 dan versi lebih baru
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # Jumlah minimum replika untuk Deployment. Harus bilangan bulat yang lebih besar dari atau sama dengan 1. maxReplicas: 10 # Jumlah maksimum replika untuk Deployment. Harus lebih besar dari minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # Target rata-rata pemanfaatan resource, yaitu rasio antara penggunaan resource rata-rata terhadap jumlah resource yang diminta.Kubernetes sebelum 1.24
apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # Harus bilangan bulat yang lebih besar dari atau sama dengan 1. maxReplicas: 10 # Harus lebih besar dari jumlah replika minimum. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50Jika Anda perlu menentukan metrik CPU dan memori sekaligus, Anda dapat menentukan kedua jenis resource
cpudanmemorydi bidangmetricsalih-alih membuat dua HPA. Ketika HPA mendeteksi bahwa salah satu metrik mencapai ambang batas penskalaan, HPA akan melakukan operasi penskalaan.metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 50 -
Jalankan perintah berikut untuk membuat HPA.
kubectl apply -f hpa.ymlPada tahap ini, jalankan perintah
kubectl describe hpa <HPA name>. Dalam contoh ini, nama HPA adalah nginx-hpa. Output yang diharapkan adalah pesan peringatan berikut, yang menunjukkan bahwa HPA masih dalam proses penerapan. Anda dapat menjalankan perintahkubectl get hpauntuk memeriksa status HPA.Warning FailedGetResourceMetric 2m (x6 over 4m) horizontal-pod-autoscaler missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5897-mqzs7 Warning FailedComputeMetricsReplicas 2m (x6 over 4m) horizontal-pod-autoscaler failed to get cpu utilization: missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5 -
Setelah HPA dibuat dan Pod memenuhi kondisi penskalaan (dalam contoh ini, pemanfaatan CPU Pod Nginx melebihi 50%), jalankan kembali perintah
kubectl describe hpa <HPA-name>untuk melihat status penskalaan horizontal.Output berikut menunjukkan bahwa HPA berjalan dengan benar.
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 5m6s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
Operasi terkait
Jika perilaku penskalaan default tidak memenuhi kebutuhan bisnis Anda, Anda dapat menggunakan bidang behavior untuk mengonfigurasi perilaku skala-turun (scaleDown) dan skala-naik (scaleUp) dengan granularitas lebih tinggi. Untuk informasi lebih lanjut, lihat Configurable scaling behavior.
Skenario khas untuk behavior mencakup, namun tidak terbatas pada:
-
Skalakan keluar secara cepat selama lonjakan traffic mendadak.
-
Skalakan keluar secara cepat tetapi skalakan masuk secara perlahan untuk workload dengan fluktuasi sering.
-
Nonaktifkan skala-masuk untuk aplikasi yang sensitif terhadap status.
-
Dalam skenario dengan keterbatasan resource atau sensitif terhadap biaya, jendela stabilisasi
stabilizationWindowSecondsmembatasi laju skala-keluar untuk mengurangi penyesuaian sering akibat fluktuasi sementara.
Untuk deskripsi dan contoh konfigurasi behavior, lihat Tune HPA scaling sensitivity.
FAQ
-
Mengapa HPA tidak menskalakan meskipun ambang batas telah tercapai?
-
Bagaimana cara mengonfigurasi interval pengumpulan metrik HPA?
-
Apakah CronHPA kompatibel dengan HPA? Bagaimana cara kerjanya?
-
Bagaimana mencegah HPA melakukan over-scaling akibat lonjakan resource awal?
-
Mengapa HPA melakukan penskalaan meskipun nilai metrik di bawah ambang batas dalam log audit?
-
Bagaimana cara mengelola VPA yang dipasang dengan kubectl dari console?
Dokumentasi terkait
Operasi terkait lainnya
-
Untuk menerapkan Horizontal Pod Autoscaling berdasarkan metrik dari komponen Alibaba Cloud menggunakan Kubernetes External Metrics, lihat Horizontal Pod Autoscaling based on Nginx Ingress metrics.
-
Untuk mengonversi metrik dari Managed Service for Prometheus menjadi metrik yang kompatibel dengan HPA, lihat Horizontal Pod autoscaling based on metrics from Managed Service for Prometheus.
-
Untuk troubleshooting HPA, lihat Node auto scaling FAQ.
-
Jika Anda perlu mengoordinasikan CronHPA dan HPA, lihat Use CronHPA with HPA.
Solusi workload scaling lainnya
-
Jika aplikasi Anda memiliki pola penggunaan resource periodik dan Anda perlu menskalakan pod berdasarkan jadwal, lihat Use CronHPA for scheduled horizontal scaling.
-
Jika penggunaan resource aplikasi Anda mengalami perubahan siklus yang sulit ditentukan menggunakan aturan, Anda dapat menggunakan AHPA untuk secara otomatis mengidentifikasi pola workload berdasarkan metrik historis dan melakukan auto scaling Pod. Untuk informasi lebih lanjut, lihat Auto Scaling Prediction (AHPA).
-
Untuk menetapkan batas resource pod secara otomatis berdasarkan penggunaan resource-nya, lihat Use Vertical Pod Autoscaler (VPA).
-
Untuk membuat kebijakan penskalaan fleksibel berdasarkan event dari antrian pesan, jadwal, atau metrik kustom, lihat Event-driven autoscaling.
Solusi gabungan
Anda dapat menggunakan HPA bersama fitur node auto scaling untuk secara otomatis menskalakan node kluster ketika resource tidak mencukupi. Untuk informasi lebih lanjut, lihat Enable node auto scaling.