Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah replika Pod berdasarkan pemanfaatan resource. 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 with 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 resource. Lalu, klik Next. Untuk informasi selengkapnya, lihat Container configuration.
CatatanHPA memerlukan permintaan resource yang ditentukan untuk Deployment.
-
Pada halaman Advanced, di bagian Access Control, klik Create di samping Service, lalu konfigurasikan parameter Service. Untuk informasi selengkapnya, lihat Advanced configurations.
-
Pada halaman Advanced, pilih Enable untuk HPA dan konfigurasikan parameter penskalaan.
-
Metric: Metrik yang didukung adalah CPU dan memory. Harus sesuai dengan jenis resource yang dikonfigurasi.
-
Condition:: Persentase pemanfaatan resource. Kontainer melakukan scale out ketika pemanfaatan melebihi nilai ini. Untuk informasi selengkapnya 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 pemanfaatan rata-rata di semua pod, dihitung sebagai (penggunaan rata-rata / 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 berfungsi dengan benar.
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
Informasi terkait
Untuk autoscaling terjadwal, lihat Cron Horizontal Pod Autoscaler (CronHPA).