Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah replika Pod berdasarkan pemanfaatan sumber daya. Di Container Service for Kubernetes (ACK), Anda dapat mengaktifkan HPA untuk aplikasi melalui Konsol atau kubectl.
Prasyarat
-
Anda telah membuat kluster ACS.
-
Anda telah terhubung ke kluster Kubernetes menggunakan kubectl.
Buat aplikasi yang diaktifkan HPA
Gunakan Konsol
-
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Workloads > Deployments.
-
Pada halaman Deployments, klik Create from Image.
-
Pada halaman Basic Information, atur parameter aplikasi lalu klik Next.
Parameter
Deskripsi
Namespace
Namespace untuk aplikasi. Nilai default:
default.Application Name
Nama aplikasi.
Replicas
Jumlah Pod untuk aplikasi. Default: 2.
Workload
Jenis workload. Pilih Deployments, StatefulSets, Jobs, atau CronJobs.
Labels
Label untuk mengidentifikasi aplikasi.
Annotations
Anotasi untuk aplikasi.
Instance Type
Tipe instans Pod. Pilih General-purpose, BestEffort, atau Performance-enhanced.
-
Pada halaman Container, konfigurasikan kontainer, pilih image, dan tentukan permintaan sumber daya. Lalu, klik Next. Untuk informasi selengkapnya, lihat Konfigurasi kontainer.
CatatanHPA memerlukan permintaan sumber daya yang ditentukan untuk Deployment.
-
Pada halaman Advanced, di bagian Access Control, klik Create di sebelah Service, lalu konfigurasikan parameter Service. Untuk informasi selengkapnya, lihat Konfigurasi lanjutan.
-
Pada halaman Advanced, pilih Enable untuk HPA dan konfigurasikan parameter penskalaan.
-
Metric: Metrik yang didukung adalah CPU dan memori. Harus sesuai dengan jenis sumber daya yang dikonfigurasi.
-
Condition:: Persentase pemanfaatan sumber daya. Kontainer melakukan scale out ketika pemanfaatan melebihi nilai ini. Untuk informasi lebih lanjut tentang algoritma Horizontal Pod Autoscaling, lihat Algorithm details.
-
Max. Replicas: Jumlah maksimum kontainer yang dapat dijalankan oleh Deployment.
-
Min. Replicas: Batas bawah jumlah replika.
-
-
Klik Create untuk membuat Deployment yang diaktifkan HPA.
Gunakan kubectl
Anda juga dapat menggunakan template orkestrasi dan kubectl untuk membuat objek HPA dan mengaitkannya ke Deployment.
Contoh berikut menggunakan aplikasi NGINX.
-
Buat file bernama nginx.yaml dan salin konten berikut ke dalamnya.
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/nginx:1.7.9 # Ganti dengan nama dan tag image Anda ports: - containerPort: 80 resources: requests: ## Diperlukan agar HPA berfungsi. cpu: 500m -
Jalankan perintah berikut untuk men-deploy aplikasi NGINX.
kubectl apply -f nginx.yaml -
Buat file
hpa.yamldengan konten berikut untuk mendefinisikan HPA.Bidang scaleTargetRef menentukan resource yang diskalakan oleh HPA. Pada contoh ini, targetnya adalah Deployment nginx.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # Jumlah replika minimum. Harus >= 1. maxReplicas: 10 # Jumlah replika maksimum. Harus > minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # Target rata-rata pemanfaatan di semua Pod, dihitung sebagai (rata-rata penggunaan / jumlah yang diminta). -
Jalankan perintah berikut untuk membuat HPA.
kubectl apply -f hpa.yaml -
Setelah HPA dibuat, jalankan
kubectl describe hpa <HPA_NAME>.Output berikut menunjukkan bahwa HPA bekerja dengan benar.
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
Informasi terkait
Untuk penskalaan terjadwal, lihat Penjadwal Horizontal Pod Autoscaler (CronHPA).