Advanced Horizontal Pod Autoscaler (AHPA) dapat melakukan penskalaan prediktif berdasarkan nilai historis metrik, seperti metrik RPS, konkurensi, CPU, dan memori. AHPA dapat menskalakan sumber daya lebih awal serta mempertahankan jumlah Pod maksimum atau minimum yang ditentukan dalam periode waktu tertentu. Dengan menentukan ekspresi cron, Anda dapat menetapkan jumlah Pod maksimum dan minimum selama periode waktu tertentu.
Prasyarat
-
Anda telah menerapkan Knative di kluster ACS.
AHPA telah diterapkan di kluster ACS. Untuk informasi selengkapnya, lihat Deploy AHPA.
Langkah 1: Gunakan AHPA untuk mengonfigurasi metrik penskalaan otomatis
Buat ConfigMap AHPA berdasarkan konten YAML berikut dan terapkan AHPA di kluster ACS.
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
name: ahpa-demo
spec:
metrics:
- type: Resource
resource:
name: rps
target:
type: Utilization
averageUtilization: 10 # Ambang batas RPS diatur ke 10.
maxReplicas: 50 # Jumlah maksimum Pod replikasi diatur ke 50.
minReplicas: 0 # Jumlah minimum Pod replikasi diatur ke 0.
prediction:
quantile: 95 # Tingkat kepercayaan prediksi diatur ke 95%.
scaleUpForward: 180 # Rentang waktu prediksi maju diatur ke 180 detik.
# Jumlah Pod replikasi dibatasi oleh jumlah maksimum dan minimum Pod replikasi yang didefinisikan oleh AHPA dari pukul 00:00:00 pada 1 Juni 2023 hingga 00:00:00 pada 1 Juni 2123.
instanceBounds:
- startTime: "2023-06-01 00:00:00"
endTime: "2123-06-01 00:00:00"
bounds:
# Jumlah minimum Pod replikasi adalah 0 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 00.00 hingga 06.00.
- cron: '* 0-6 ? * *'
maxReplicas: 50
minReplicas: 0
# Jumlah minimum Pod replikasi adalah 5 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 07.00 hingga 09.00.
- cron: '* 7-9 ? * *'
maxReplicas: 50
minReplicas: 5
# Jumlah minimum Pod replikasi adalah 10 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 10.00 hingga 16.00.
- cron: '* 10-16 ? * *'
maxReplicas: 50
minReplicas: 10
# Jumlah minimum Pod replikasi adalah 2 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 17.00 hingga 23.00.
- cron: '* 17-23 ? * *'
maxReplicas: 50
minReplicas: 2
Parameter | Wajib | Deskripsi |
| Ya | Konfigurasikan metrik untuk penskalaan otomatis. Metrik RPS, konkurensi, CPU, dan memori didukung. |
| Ya | Jumlah maksimum Pod replikasi yang diizinkan. |
| Ya | Jumlah minimum Pod replikasi yang harus dijamin. |
| Tidak | Periode waktu di mana jumlah Pod replikasi dibatasi oleh jumlah maksimum dan minimum Pod replikasi yang didefinisikan oleh AHPA.
|
| Tidak | Jumlah maksimum dan minimum Pod replikasi dalam periode waktu tertentu.
|
Bidang yang digunakan dalam ekspresi cron
Bidang-bidang dalam ekspresi cron dijelaskan sebagai berikut. Untuk informasi selengkapnya, lihat Tugas terjadwal Cron.
Bidang | Karakter khusus | Wajib | Deskripsi |
Menit | * / , - | Ya | Nilai valid: 0 hingga 59. |
Jam | * / , - | Ya | Nilai valid: 0 hingga 23. |
Hari dalam bulan | * / , – ? | Ya | Nilai valid: 1 hingga 31. |
Bulan | * / , - | Ya | Nilai valid: 1 hingga 12 atau JAN hingga DEC. Catatan Nilai valid dari JAN hingga DEC tidak peka huruf besar/kecil. |
Hari dalam minggu | * / , – ? | Tidak | Nilai valid: 0 hingga 6 atau SUN hingga SAT. Catatan
|
Karakter khusus yang digunakan dalam ekspresi cron:
Tanda bintang (*) menunjukkan nilai apa pun. Misalnya,
*menunjukkan menit atau jam apa pun.Garis miring (/) menunjukkan ukuran langkah. Misalnya,
/5menunjukkan setiap lima satuan waktu.Koma (,) digunakan sebagai pembatas. Misalnya,
1,3,5menunjukkan nilai 1, 3, dan 5.Tanda hubung (-) digunakan dalam rentang nilai. Misalnya,
1-5menunjukkan nilai dari 1 hingga 5.Tanda tanya (?) hanya digunakan dalam bidang Hari dalam bulan dan Hari dalam minggu untuk menunjukkan nilai variabel.
Langkah 2: Buat Layanan Knative dan aktifkan AHPA untuk Layanan tersebut
-
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih .
-
Pada halaman Knative, klik tab Services. Pilih default dari daftar drop-down Namespace. Klik Buat dengan Template, tempel templat YAML berikut ke editor, lalu klik Create. Ini akan membuat Layanan bernama helloworld-go-demo.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go-demo spec: template: metadata: annotations: autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev # Tentukan Plugin AHPA. autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo" # Jika Anda mengubah parameter templat AHPA, revisi yang sesuai juga diperbarui. spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 env: - name: TARGET value: "Knative"Setelah Layanan dibuat, catat alamat gerbang dan nama domain Layanan tersebut, yang akan digunakan di Langkah 3: Akses Layanan.
Pada tab Services, Anda dapat menemukan alamat gerbang (misalnya,
alb-xxx.ncs.com) di bagian Access Gateway. Di daftar layanan, kolom Default Domain Name menampilkan nama domain layanan (misalnya,helloworld-go.default.example.com). Untuk mengakses Layanan, kirim permintaan ke alamat gerbang dengan headerHostdiatur ke nama domain default layanan.
Langkah 3: Akses Layanan
Jalankan perintah berikut untuk mengakses Layanan:
# helloworld-go-demo.default.example.com adalah nama domain default Layanan. # alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com adalah alamat gerbang Layanan. curl -H "Host: helloworld-go-demo.default.example.com" http://alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.comHasil yang diharapkan:
Hello Knative!
Langkah 4 (Opsional): Verifikasi penskalaan otomatis terjadwal
Pada halaman Monitoring Dashboards Knative, Anda dapat melihat tren penskalaan instans layanan Knative. Untuk informasi selengkapnya tentang Monitoring Dashboard Knative, lihat Lihat Monitoring Dashboard Layanan Knative.
-
Jika aplikasi Knative diskalakan ke nol dan tidak memiliki Pod yang berjalan, Managed Service for Prometheus tidak dapat mengumpulkan metrik seperti konkurensi permintaan dan permintaan per detik untuk Pod tersebut. Metrik ini hanya ditampilkan di konsol setelah permintaan dikirim ke Pod aplikasi Knative.
-
Jika aplikasi Knative tidak diskalakan ke nol, konsol menampilkan metrik seperti konkurensi permintaan dan permintaan per detik untuk Pod tersebut, meskipun Pod tidak sedang menangani permintaan.

Referensi
Anda dapat mengonfigurasi penskalaan otomatis berdasarkan jumlah permintaan konkuren Pod dan konfigurasi RPS. Untuk informasi selengkapnya, lihat Aktifkan penskalaan otomatis untuk menangani fluktuasi traffic.