Alibaba Cloud Container Compute Service (ACS) memungkinkan Anda membuat aplikasi yang mendukung Penyesuaian Otomatis Pod Horizontal (HPA) melalui Konsol atau kubectl. HPA secara otomatis menyesuaikan jumlah replika Pod berdasarkan pemanfaatan resource sehingga aplikasi Anda dapat diskalakan sesuai permintaan. Topik ini menjelaskan cara membuat aplikasi yang mendukung HPA dan memverifikasi perilaku penskalaannya.
Prasyarat
Anda telah membuat kluster ACS.
Anda telah terhubung ke kluster Kubernetes menggunakan kubectl.
Buat aplikasi yang mendukung HPA
Konsol
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
Pada halaman Deployments, klik Create with Image.
Pada halaman Basic Information, masukkan nama aplikasi lalu klik Next.
Parameter
Description
Namespace
Pilih namespace tempat Anda ingin menerapkan aplikasi. Namespace default dipilih secara otomatis.
Application Name
Masukkan nama untuk aplikasi Anda.
Number of Replicas
Tentukan jumlah awal Pod untuk aplikasi Anda. Nilai default adalah 2.
Workload
Pilih tipe workload: Stateless, Stateful, Task, atau Scheduled Task.
Label
Tambahkan label untuk mengidentifikasi dan mengelompokkan aplikasi Anda.
Annotation
Tambahkan anotasi untuk menyambungkan metadata ke aplikasi Anda.
Instance Type
Pilih tipe instans Pod: General-purpose, BestEffort, atau Compute-optimized.
Pada halaman Container Configuration, konfigurasikan pengaturan kontainer Anda, pilih image, dan tentukan kebutuhan resource. Lalu klik Next. Untuk detailnya, lihat Container configuration.
CatatanAnda harus menentukan resource requests untuk deployment tersebut. HPA tidak dapat menskalakan kontainer tanpa resource requests yang telah ditentukan.
Pada halaman Advanced Settings, di bagian Access Settings, klik Create untuk mengonfigurasi pengaturan layanan. Untuk detailnya, lihat Advanced Configuration.
Pada halaman Advanced Settings, atur Metric-based Scaling ke Enable dan konfigurasikan parameter penskalaan.
Klik Create di pojok kanan bawah. Deployment yang mendukung HPA Anda sekarang telah dibuat.
kubectl
Anda dapat menggunakan kubectl untuk membuat resource HPA dari manifes YAML. Resource HPA tersebut mereferensikan dan menskalakan deployment target Anda.
Contoh berikut menunjukkan cara mengonfigurasi HPA untuk aplikasi Nginx.
Buat file bernama nginx.yaml dan tambahkan manifes deployment berikut.
Manifes ini mendefinisikan deployment Nginx dengan resource requests CPU.
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 image Anda ports: - containerPort: 80 resources: requests: # Diperlukan agar HPA berfungsi cpu: 500mJalankan perintah berikut untuk membuat deployment Nginx.
kubectl apply -f nginx.yamlBuat file bernama hpa.yaml dan tambahkan manifes HPA berikut.
Bidang scaleTargetRef menentukan deployment yang dipantau dan diskalakan oleh HPA. Pada contoh ini, HPA menargetkan deployment nginx.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # Replika minimum. Harus 1 atau lebih. maxReplicas: 10 # Replika maksimum. Harus lebih besar dari minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # Persentase target pemanfaatan CPUJalankan perintah berikut untuk membuat resource HPA.
kubectl apply -f hpa.yamlJalankan perintah berikut untuk memverifikasi bahwa HPA berfungsi dengan benar.
kubectl describe hpa nginx-hpaJika HPA berjalan dengan benar, Anda akan melihat output seperti berikut:
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target