Anda dapat mengaktifkan fitur Penskalaan Otomatis Pod Horizontal (HPA) untuk menyesuaikan jumlah pod secara otomatis berdasarkan penggunaan CPU, memori, atau metrik lainnya. HPA meningkatkan jumlah replika pod saat terjadi lonjakan beban kerja dan menyesuaikannya kembali ketika beban berkurang, tanpa memerlukan intervensi manual. Fitur ini sangat cocok untuk bisnis dengan fluktuasi layanan tinggi, seperti e-commerce, pendidikan online, dan layanan keuangan.
Prasyarat
Buat aplikasi dengan HPA diaktifkan di konsol ACK
Masuk ke konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin dikelola, lalu klik nama kluster atau pilih Details di kolom Actions. Halaman detail kluster akan muncul.
Di panel navigasi halaman detail kluster, pilih .
Di halaman Deployments, klik Create from Image.
Di halaman Create, masukkan informasi dasar, konfigurasi kontainer, konfigurasi layanan, dan konfigurasi penskalaan sesuai petunjuk untuk membuat Penyebaran yang mendukung HPA.
Untuk informasi lebih lanjut tentang langkah-langkah spesifik dan parameter konfigurasi, lihat Membuat Aplikasi Tanpa Status dari Gambar. Berikut adalah penjelasan parameter utama:
Basic Information: Tentukan informasi aplikasi, seperti nama dan jumlah replika.
Container: Pilih gambar serta sumber daya CPU dan memori yang diperlukan.
PentingTetapkan sumber daya permintaan yang dibutuhkan oleh aplikasi. Jika tidak, HPA tidak akan berfungsi.
Advanced:
Di bagian Access Control, klik Create di sebelah kanan Services untuk menetapkan parameter.
Di bagian Scaling, pilih Enable untuk HPA dan konfigurasikan kondisi serta parameter terkait.
Metrics: Pilih CPU Usage atau Memory Usage, yang harus sesuai dengan nilai yang ditentukan di bidang Required Resources. Jika baik CPU Usage maupun Memory Usage telah ditentukan, HPA akan menjalankan operasi penskalaan ketika salah satu metrik mencapai ambang batas penskalaan.
Condition: Tentukan ambang batas penggunaan sumber daya. HPA memicu peristiwa penskalaan ketika ambang batas terlampaui. Untuk informasi lebih lanjut tentang algoritma yang digunakan dalam penskalaan otomatis pod horizontal, lihat Detail Algoritma.
Max. Replicas: Tentukan jumlah maksimum pod yang dapat diskalakan oleh Penyebaran. Nilai ini harus lebih besar dari jumlah minimum pod yang direplikasi.
Min. Replicas: Tentukan jumlah minimum pod yang harus berjalan untuk Penyebaran. Nilai ini harus bilangan bulat lebih besar dari atau sama dengan 1.
Buat aplikasi yang memiliki HPA diaktifkan menggunakan kubectl
Anda juga dapat membuat HPA menggunakan template orkestrasi dan mengaitkan HPA dengan Penyebaran tempat Anda ingin mengaktifkan HPA. Kemudian, jalankan perintah kubectl untuk mengaktifkan HPA. Kami merekomendasikan agar Anda hanya membuat satu aplikasi dengan HPA diaktifkan untuk setiap beban kerja. Contoh berikut menunjukkan cara mengaktifkan HPA untuk aplikasi NGINX.
Buat file bernama nginx.yml dan salin konten berikut ke dalam file tersebut.
PentingKonfigurasikan sumber daya
requestyang dibutuhkan oleh aplikasi. Jika tidak, HPA tidak dapat diaktifkan.apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 # Ganti dengan <image_name:tags> Anda yang sebenarnya. ports: - containerPort: 80 resources: requests: # Parameter ini diperlukan untuk perhitungan metrik HPA. Jika tidak, HPA akan menampilkan status tidak diketahui. cpu: 500mJalankan perintah berikut untuk membuat aplikasi NGINX:
kubectl apply -f nginx.ymlBuat file bernama hpa.yml dan salin konten berikut ke dalam file tersebut guna membuat HPA.
Gunakan parameter
scaleTargetRefuntuk mengaitkan HPA dengan Penyebarannginxdan memicu operasi penskalaan ketika rata-rata penggunaan CPU semua kontainer dalam pod mencapai 50%.Template YAML untuk kluster dengan versi Kubernetes 1.24 dan yang lebih baru
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # Jumlah minimum kontainer yang harus berjalan untuk Penyebaran. Nilai parameter ini harus bilangan bulat lebih besar dari atau sama dengan 1. maxReplicas: 10 # Jumlah maksimum kontainer yang dapat diskalakan oleh Penyebaran. Nilai parameter ini harus lebih besar dari minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # Rata-rata pemanfaatan sumber daya target, yaitu rasio nilai rata-rata penggunaan sumber daya terhadap jumlah permintaannya.Template YAML untuk kluster dengan versi Kubernetes lebih lama dari 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 lebih besar dari atau sama dengan 1. maxReplicas: 10 # Harus lebih besar dari minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50Jika Anda perlu menentukan metrik CPU dan memori, Anda dapat menentukan kedua jenis sumber daya
cpudanmemorydi bawah bidangmetrics, alih-alih membuat dua HPA. Jika HPA mendeteksi bahwa salah satu metrik mencapai ambang batas penskalaan, ia akan melakukan operasi penskalaan.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.ymlSetelah itu, jalankan perintah
kubectl describe hpa <Nama HPA>. Peringatan serupa dengan output berikut akan dikembalikan, menunjukkan bahwa HPA masih dalam proses penyebaran. Nama HPA dalam contoh ini adalah nginx-hpa. 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 HPA dibuat dan pod mencapai kondisi penskalaan, yaitu ketika penggunaan CPU pod NGINX melebihi 50% dalam contoh ini. Lalu, jalankan perintah
kubectl describe hpa <Nama HPA>lagi untuk memeriksa status penskalaan horizontal.Jika output berikut dikembalikan, HPA sedang berjalan sesuai harapan:
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 5m6s horizontal-pod-autoscaler New size: 1; reason: All metrics below target