Anda dapat mengaktifkan fitur Horizontal Pod Autoscaler (HPA) pada kontainer aplikasi untuk secara otomatis menyesuaikan jumlah pod berdasarkan penggunaan CPU, memori, atau metrik kustom lainnya. HPA secara otomatis menambah replika pod guna menangani lonjakan beban kerja mendadak dan mengurangi replika saat beban menurun guna menghemat sumber daya. Proses ini sepenuhnya otomatis dan ideal untuk layanan dengan fluktuasi beban kerja signifikan yang memerlukan penskalaan berkala, seperti e-commerce, pendidikan daring, dan layanan keuangan.
Sebelum memulai
Sebelum menggunakan fitur HPA, disarankan membaca dokumentasi resmi Kubernetes tentang Horizontal Pod Autoscaling untuk memahami prinsip dasar, detail algoritma, serta perilaku penskalaan yang dapat dikonfigurasi.
Kluster ACK menyediakan berbagai solusi workload scaling (elastisitas lapisan penjadwalan) dan node scaling (elastisitas lapisan sumber daya). Sebelum melanjutkan, baca Auto Scaling untuk memahami kasus penggunaan dan keterbatasan masing-masing solusi.
Prasyarat
Sebuah ACK managed cluster atau ACK dedicated cluster telah dibuat. Untuk informasi selengkapnya, lihat Create a cluster.
Jika ingin menggunakan perintah kubectl untuk menerapkan HPA, Anda harus menghubungkan klien kubectl ke kluster Kubernetes Anda. Untuk informasi selengkapnya, lihat Get cluster KubeConfig and use kubectl to connect to a cluster.
Buat aplikasi HPA di konsol
Container Service for Kubernetes (ACK) terintegrasi dengan HPA, sehingga memungkinkan Anda membuat aplikasi HPA melalui konsol ACK. Anda dapat mengaktifkan HPA saat membuat aplikasi baru atau pada aplikasi yang sudah ada. Disarankan hanya membuat satu HPA untuk setiap workload.
Buat HPA saat membuat aplikasi
Langkah-langkah berikut menggunakan deployment tanpa status sebagai contoh untuk mengaktifkan HPA pada aplikasi. Prosedur untuk jenis workload lainnya serupa.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, pilih .
Pada halaman Stateless, klik Create From Image.
Pada halaman Create, konfigurasikan informasi dasar aplikasi serta pengaturan untuk kontainer, layanan, dan penskalaan guna membuat deployment yang mendukung Horizontal Pod Autoscaler (HPA).
Untuk informasi lebih lanjut tentang langkah-langkah dan parameter, lihat Create a stateless workload (Deployment). Berikut penjelasan parameter utama:
Basic Information: Konfigurasikan pengaturan dasar aplikasi, seperti nama dan jumlah replika.
Container Configuration: Konfigurasikan citra kontainer serta sumber daya CPU dan memori yang diperlukan.
Anda dapat menggunakan fitur resource profile untuk menganalisis data historis penggunaan sumber daya dan mendapatkan rekomendasi konfigurasi request dan limit kontainer. Untuk informasi selengkapnya, lihat Resource profiles.
PentingAnda harus menetapkan request sumber daya untuk aplikasi. Jika tidak, penskalaan kontainer otomatis tidak dapat dilakukan.
Advanced Configuration:
Pada bagian Access Settings, klik Create di sebelah Service untuk mengonfigurasi layanan.
Pada bagian Scaling Configuration, atur Metric-based Scaling ke Enable dan konfigurasikan kondisi serta parameter penskalaan.
Metric: Metrik yang didukung adalah CPU dan memori. Jenis metrik harus sesuai dengan jenis sumber daya yang ditetapkan. Jika Anda menentukan CPU dan memori sekaligus, HPA akan memicu event penskalaan ketika salah satu metrik mencapai ambang batasnya.
Trigger Condition: Menentukan persentase penggunaan sumber daya. Saat penggunaan sumber daya melebihi nilai ini, aplikasi akan memperluas kapasitas. Untuk informasi selengkapnya tentang algoritma horizontal pod autoscaling, lihat Algorithm details.
Maximum Replicas: Jumlah maksimum replika yang dapat diperluas oleh deployment. Nilai ini harus lebih besar dari jumlah replika minimum.
Minimum Replicas: Jumlah minimum replika untuk deployment, yang harus berupa bilangan bulat lebih besar atau sama dengan 1.
Setelah deployment dibuat, Anda dapat melihatnya di halaman Deployments. Klik nama deployment tersebut, lalu klik tab Pod Scaling. Di tab ini, Anda dapat melihat metrik terkait aktivitas Horizontal Pod Autoscaler (HPA), seperti penggunaan CPU atau memori serta jumlah replika maksimum atau minimum. Anda juga dapat mengelola HPA, misalnya memperbarui konfigurasinya atau menonaktifkannya.
Buat HPA untuk aplikasi yang sudah ada
Langkah-langkah berikut menggunakan deployment tanpa status sebagai contoh untuk mengaktifkan HPA pada aplikasi yang sudah ada. Prosedur untuk jenis workload lainnya serupa.
Halaman Workload
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, pilih .
Pada halaman Stateless, klik nama aplikasi target, klik tab Container Scaling, lalu di area HPA, klik Create.
Pada kotak dialog Create, konfigurasikan pengaturan penskalaan.
Name: Menentukan nama kebijakan HPA.
Untuk Metric, klik Add.
Metric: Metrik yang didukung adalah CPU dan memori. Jenis metrik harus sesuai dengan jenis sumber daya yang ditetapkan. Jika Anda menentukan CPU dan memori sekaligus, HPA akan memicu event penskalaan ketika salah satu metrik mencapai ambang batasnya.
Threshold: Persentase penggunaan sumber daya. Kontainer akan memperluas kapasitas saat penggunaan sumber daya melebihi nilai ini. Untuk informasi selengkapnya tentang algoritma horizontal pod autoscaling, lihat Algorithm details.
Maximum Replicas: Jumlah maksimum replika yang dapat diperluas oleh deployment. Nilai ini harus lebih besar dari jumlah replika minimum.
Minimum Replicas: Jumlah minimum replika untuk deployment, yang harus berupa bilangan bulat lebih besar atau sama dengan 1.
Setelah konfigurasi selesai, Anda dapat mengklik nama deployment di halaman Deployments, lalu klik tab Pod Scaling. Di tab ini, Anda dapat melihat metrik untuk Horizontal Pod Autoscaler (HPA), seperti penggunaan CPU dan memori, serta jumlah replika minimum dan maksimum. Anda juga dapat mengelola HPA, misalnya memperbarui konfigurasinya atau menonaktifkannya.
Halaman Workload Scaling
Halaman ini hanya tersedia bagi pengguna dalam daftar putih. Untuk menggunakannya, submit a ticket.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, klik Workload Scaling.
Di pojok kanan atas, klik Create Auto Scaling, lalu klik tab HPA and CronHPA. Pilih workload target. Di bagian Configure Scaling Policy, pilih Metric-based Autoscaling HPA, lalu konfigurasikan kebijakan HPA.
Policy Name: Nama kebijakan HPA.
Minimum Replicas: Jumlah minimum replika untuk workload. Nilainya harus minimal 1.
Maximum Replicas: Jumlah maksimum replika yang dapat diperluas oleh workload. 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 sumber daya yang ditentukan. Jika Anda menentukan beberapa jenis sumber daya, HPA akan memicu event penskalaan ketika salah satu metrik mencapai ambang batasnya.
Threshold: Persentase penggunaan sumber daya yang memicu kontainer untuk memperluas kapasitas. Untuk informasi selengkapnya tentang algoritma horizontal pod autoscaling, lihat Algorithm details.
Setelah HPA dibuat, Anda dapat melihat daftar HPA di halaman Workload Scaling. Di kolom Actions, Anda dapat melihat metrik untuk HPA, seperti penggunaan sumber daya dan jumlah replika minimum serta maksimum. Anda juga dapat mengelola HPA dengan memperbarui konfigurasinya atau menonaktifkannya.
Verifikasi hasil
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, klik Workload Scaling.
Klik tab Horizontal Scaling, pilih HPA, lalu lihat status penskalaan dan daftar tugas.
Di lingkungan produksi, aplikasi diskalakan berdasarkan muatan pod. Anda juga dapat melakukan uji stres pada pod di lingkungan staging untuk memverifikasi perilaku skalabilitas horizontal.
Buat aplikasi HPA menggunakan kubectl
Anda juga dapat membuat HPA secara manual dari template orkestrasi dan mengikatnya ke objek deployment yang ingin Anda skalakan. Kemudian, gunakan perintah kubectl untuk mengonfigurasi penskalaan kontainer otomatis. Disarankan hanya membuat satu HPA untuk setiap workload. Langkah-langkah berikut menggunakan aplikasi Nginx yang mendukung HPA sebagai contoh.
Buat file bernama nginx.yml dan salin konten berikut ke dalamnya.
PentingSaat menerapkan HPA, Anda harus menetapkan sumber daya
requestuntuk pod. Jika tidak, HPA tidak dapat berjalan. Anda dapat menggunakan fitur resource profile untuk menganalisis data historis penggunaan sumber daya dan mendapatkan rekomendasi konfigurasi request dan limit kontainer. Untuk informasi selengkapnya, lihat Resource profiles.Jalankan perintah berikut untuk membuat aplikasi Nginx.
kubectl apply -f nginx.ymlBuat file bernama hpa.yml dan salin konten berikut ke dalamnya untuk membuat HPA.
Gunakan
scaleTargetRefuntuk menentukan objek yang akan diikat oleh HPA. Dalam contoh ini, HPA diikat ke deployment bernamanginx. Event penskalaan dipicu ketika rata-rata penggunaan CPU semua kontainer di semua pod mencapai 50%.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. Nilainya harus berupa bilangan bulat lebih besar atau sama dengan 1. maxReplicas: 10 # Jumlah maksimum replika untuk deployment. Nilainya harus lebih besar dari minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # Target rata-rata utilisasi sumber daya. Ini adalah rasio antara rata-rata penggunaan sumber daya terhadap jumlah yang diminta.Versi sebelum 1.24
apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # Nilainya harus berupa bilangan bulat lebih besar atau sama dengan 1. maxReplicas: 10 # Nilainya harus lebih besar dari jumlah replika minimum. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50Jika Anda ingin menentukan metrik CPU dan memori sekaligus, Anda dapat menentukan kedua jenis sumber daya
cpudanmemorydi bidangmetricsalih-alih membuat dua HPA. HPA akan melakukan operasi penskalaan ketika mendeteksi bahwa salah satu metrik telah mencapai ambang batas penskalaannya.metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 50Jalankan perintah berikut untuk membuat HPA.
kubectl apply -f hpa.ymlPada titik ini, jalankan perintah
kubectl describe hpa <HPA_name>. Dalam contoh ini, nama HPA adalah nginx-hpa. Pesan peringatan berikut diharapkan muncul dalam output. Pesan ini menunjukkan bahwa HPA masih dalam proses deployment. 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-75675f5Tunggu hingga HPA selesai dibuat dan pod memenuhi kondisi penskalaan. Dalam contoh ini, kondisi penskalaan adalah penggunaan CPU pod Nginx melebihi 50%. Lalu, jalankan kembali perintah
kubectl describe hpa <HPA_name>untuk melihat status skalabilitas horizontal.Output berikut menunjukkan bahwa HPA berjalan sesuai harapan.
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 keluar (scaleUp) secara lebih granular. Untuk informasi selengkapnya, lihat Configurable scaling behavior.
Skenario khas yang didukung oleh bidang behavior meliputi, namun tidak terbatas pada, hal-hal berikut:
Memperluas kapasitas secara cepat selama lonjakan traffic.
Menerapkan skala keluar cepat dan skala masuk lambat untuk skenario dengan fluktuasi beban yang sering.
Menonaktifkan skala masuk untuk aplikasi yang sensitif terhadap status.
Dalam skenario dengan keterbatasan sumber daya atau sensitif biaya, Anda dapat menggunakan jendela stabilisasi
stabilizationWindowSecondsuntuk membatasi kecepatan skala keluar. Hal ini mengurangi penyesuaian berulang yang disebabkan oleh fluktuasi sementara.
Untuk informasi selengkapnya tentang konfigurasi behavior dan contohnya, lihat Adjust the scaling sensitivity of HPA.
FAQ
Apa yang harus saya lakukan jika "unknown" ditampilkan di kolom current pada metrik HPA?
Apa yang harus saya lakukan jika HPA tidak dapat mengumpulkan metrik dan gagal melakukan penskalaan?
Bagaimana cara mengonfigurasi interval pengumpulan metrik HPA?
Apa arti dari satuan metrik utilisasi yang dikumpulkan oleh HPA?
Referensi
Dokumen terkait lainnya
Untuk mempelajari cara menerapkan HPA berdasarkan metrik komponen Alibaba Cloud menggunakan dukungan metrik eksternal di Kubernetes, lihat Horizontal pod autoscaling based on Alibaba Cloud component metrics.
Untuk mempelajari cara mengonversi metrik Prometheus menjadi metrik yang dapat digunakan oleh HPA untuk horizontal pod autoscaling, lihat Horizontal pod autoscaling based on Alibaba Cloud Prometheus metrics.
Untuk informasi tentang cara memecahkan masalah autoscaling, lihat Node autoscaling FAQ.
Untuk mengoordinasikan CronHPA dan HPA, lihat Coordinate CronHPA and HPA.
Solusi workload scaling lainnya
Jika penggunaan sumber daya aplikasi Anda berubah secara periodik dan Anda perlu menskalakan pod berdasarkan jadwal, mirip dengan kebijakan Crontab, lihat Use CronHPA for scheduled horizontal pod scaling.
Jika penggunaan sumber daya aplikasi Anda berubah secara periodik yang sulit didefinisikan dengan aturan, Anda dapat menggunakan AHPA untuk secara otomatis mengidentifikasi siklus bisnis dari metrik historis dan menskalakan pod sesuai kebutuhan. Untuk informasi selengkapnya, lihat Predictive autoscaling (AHPA).
Untuk secara otomatis menetapkan batas sumber daya untuk pod berdasarkan penggunaan sumber dayanya dan memastikan pod memiliki sumber daya komputasi yang cukup, lihat Use Vertical Pod Autoscaling (VPA).
Untuk secara fleksibel menyesuaikan kebijakan penskalaan pod berdasarkan event Kubernetes seperti antrian pesan, kebijakan terjadwal, dan metrik kustom, lihat Event-driven autoscaling.
Solusi gabungan
Anda dapat menggunakan HPA bersama fitur node autoscaling untuk secara otomatis menskalakan node saat sumber daya kluster tidak mencukupi. Untuk informasi selengkapnya, lihat Enable node autoscaling.