Advanced Horizontal Pod Autoscaler (AHPA) mendukung penskalaan prediktif berdasarkan metrik historis seperti permintaan per detik (RPS), konkurensi, penggunaan CPU, dan memori. Kemampuan ini memungkinkan perencanaan penskalaan proaktif, membantu menghindari penundaan dalam penskalaan layanan. AHPA juga memungkinkan Anda menentukan jumlah maksimum dan minimum pod replika dalam periode tertentu. Dengan menggunakan ekspresi cron, Anda dapat mengatur rentang penskalaan untuk interval waktu tertentu, menentukan jumlah replika yang diinginkan guna memastikan alokasi sumber daya optimal selama berbagai waktu dalam sehari.
Prasyarat
Knative telah diterapkan di kluster Anda. Untuk informasi lebih lanjut, lihat Terapkan dan Kelola Knative.
AHPA telah diterapkan. Untuk informasi lebih lanjut, lihat Terapkan AHPA.
Langkah 1: Gunakan AHPA untuk mengonfigurasi metrik untuk penskalaan otomatis
Gunakan template YAML berikut untuk membuat file konfigurasi AHPA dan terapkan ke kluster:
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 menjadi 10.
maxReplicas: 50 # Jumlah maksimum pod yang direplikasi diatur menjadi 50.
minReplicas: 0 # Jumlah minimum pod yang direplikasi diatur menjadi 0.
prediction:
quantile: 95 # Tingkat kepercayaan prediksi diatur menjadi 95%.
scaleUpForward: 180 # Rentang waktu prediksi maju diatur menjadi 180 detik.
# Jumlah pod yang direplikasi dibatasi oleh jumlah maksimum dan minimum pod yang direplikasi yang ditentukan oleh AHPA dari 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 yang direplikasi adalah 0 dan jumlah maksimum pod yang direplikasi adalah 50 dari pukul 0 pagi hingga 6 pagi.
- cron: '* 0-6 ? * *'
maxReplicas: 50
minReplicas: 0
# Jumlah minimum pod yang direplikasi adalah 5 dan jumlah maksimum pod yang direplikasi adalah 50 dari pukul 7 pagi hingga 9 pagi.
- cron: '* 7-9 ? * *'
maxReplicas: 50
minReplicas: 5
# Jumlah minimum pod yang direplikasi adalah 10 dan jumlah maksimum pod yang direplikasi adalah 50 dari pukul 10 pagi hingga 4 sore.
- cron: '* 10-16 ? * *'
maxReplicas: 50
minReplicas: 10
# Jumlah minimum pod yang direplikasi adalah 2 dan jumlah maksimum pod yang direplikasi adalah 50 dari pukul 5 sore hingga 11 malam.
- cron: '* 17-23 ? * *'
maxReplicas: 50
minReplicas: 2Parameter | Diperlukan | Deskripsi |
metrics | Ya | Konfigurasikan metrik untuk penskalaan otomatis. Metrik RPS, konkurensi, CPU, dan memori didukung. |
maxReplicas | Ya | Jumlah maksimum pod yang direplikasi yang diizinkan. |
minReplicas | Ya | Jumlah minimum pod yang direplikasi yang harus dijamin. |
instanceBounds | Tidak | Periode waktu selama jumlah pod yang direplikasi dibatasi oleh jumlah maksimum dan minimum pod yang direplikasi yang ditentukan oleh AHPA.
|
bounds | Tidak | Jumlah maksimum dan minimum pod yang direplikasi dalam periode waktu yang ditentukan.
|
Bidang yang digunakan dalam ekspresi cron
Tabel berikut menjelaskan bidang dalam ekspresi CRON. Untuk informasi lebih lanjut, lihat Ekspresi Cron.
Bidang | Karakter khusus | Diperlukan | 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 dalam ekspresi cron:
Tanda bintang (*) menunjukkan nilai apa saja. Contohnya,
*menunjukkan menit atau jam apa pun.Garis miring (/) menunjukkan ukuran langkah. Contohnya,
/5menunjukkan lima unit waktu.Koma (,) digunakan sebagai pemisah. Contohnya,
1,3,5menunjukkan nilai 1, 3, dan 5.Tanda hubung (-) digunakan dalam rentang nilai. Contohnya,
1-5menunjukkan nilai 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
Setelah mengaktifkan AHPA, Anda dapat menggunakannya melalui Layanan Knative.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Di tab Layanan halaman Knative, atur Namespace ke default, klik Create from Template, salin konten YAML berikut ke editor, dan klik Create untuk 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 memodifikasi parameter template 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 gateway dan nama domain Layanan, yang akan digunakan dalam Langkah 3: Akses 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 gateway Layanan.
curl -H "Host: helloworld-go-demo.default.example.com" http://alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.comKeluaran yang diharapkan:
Hello Knative!Langkah 4 (Opsional): Verifikasi penskalaan berjadwal
Di Monitoring Dashboards Knative, Anda dapat melihat tren penskalaan pod untuk Layanan Knative. Untuk informasi lebih lanjut tentang dasbor Knative, lihat Lihat Dasbor Pemantauan Knative.
Ketika jumlah pod untuk aplikasi Knative diskalakan menjadi nol, metrik seperti konkurensi permintaan dan jumlah permintaan yang dikirim per detik tidak dapat dikumpulkan oleh Managed Service for Prometheus. Anda dapat melihat metrik ini di konsol hanya setelah mengakses pod aplikasi Knative.
Ketika jumlah pod untuk aplikasi Knative tidak nol, Anda dapat langsung melihat metrik seperti konkurensi permintaan dan jumlah permintaan yang dikirim ke pod per detik di konsol tanpa harus mengakses pod aplikasi Knative.

Referensi
Anda dapat mengonfigurasi penskalaan otomatis berdasarkan jumlah permintaan pod bersamaan dan konfigurasi RPS. Untuk informasi lebih lanjut, lihat Aktifkan Penskalaan Otomatis untuk Menahan Fluktuasi Lalu Lintas.