Alibaba Cloud Container Compute Service (ACS) mendukung Advanced Horizontal Pod Autoscaler (AHPA). AHPA menganalisis data historis dari Prometheus untuk memprediksi permintaan resource di masa depan dan secara dinamis menyesuaikan jumlah replika pod. Pendekatan ini memastikan resource diperluas dan dipra-ambil sebelum puncak trafik, sehingga meningkatkan responsivitas dan stabilitas sistem. Selama periode trafik rendah yang diprediksi, AHPA juga melakukan skala-masuk resource untuk menghemat biaya.
Informasi latar belakang
Kontroler AHPA terintegrasi dengan Managed Service for Prometheus untuk memperoleh dan memproses data metrik historis aplikasi Anda. Data ini menjadi dasar pengambilan keputusan penskalaan prediktif. Dengan menggunakan algoritma pembelajaran mesin, kontroler AHPA memprediksi jumlah instans pod yang dibutuhkan dalam 24 jam ke depan—sangat berguna untuk menangani workload dengan pola siklikal. Dengan menggabungkan strategi prediksi proaktif dan pasif, kontroler AHPA menyesuaikan jumlah instans pod agar resource dipra-ambil menjelang puncak trafik. Pendekatan ini meningkatkan responsivitas dan kinerja aplikasi sekaligus membantu Anda mengelola biaya dan menjaga stabilitas layanan. Untuk informasi selengkapnya tentang AHPA, lihat Ikhtisar AHPA.
Prasyarat
-
Anda telah membuat kluster ACS.
Managed Service for Prometheus telah diaktifkan. Untuk informasi selengkapnya, lihat Gunakan Managed Service for Prometheus untuk memantau kluster ACS.
Langkah 1: Instal kontroler AHPA
-
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, klik Add-ons.
Pada halaman Add-ons, temukan AHPA controller dalam kategori Others dan klik Install.
Langkah 2: Konfigurasi Prometheus dan integrasikan AHPA
Masuk ke Konsol ARMS.
-
Di panel navigasi kiri, pilih .
Di bagian atas halaman Instances, pilih wilayah tempat instans Prometheus Anda diterapkan. Klik nama instans target, yang memiliki nama yang sama dengan kluster ACS Anda dan Instance Type berupa General. Di panel navigasi sisi kiri, klik Settings. Pada bagian HTTP API Address (Grafana Read Address), catat nilai parameter berikut.
Jika token diaktifkan, catat token akses.
Lihat dan catat titik akhir jaringan internal (Internal Network) (URL Prometheus).
Tetapkan URL kueri Prometheus di kluster ACS.
Buat file bernama application-intelligence.yaml dengan konten berikut.
prometheusUrl: Titik akhir akses instans Prometheus ARMS.token: Token akses instans Prometheus.
apiVersion: v1 kind: ConfigMap metadata: name: application-intelligence namespace: kube-system data: prometheusUrl: "http://cn-hangzhou-intranet.arms.aliyuncs.com:9443/api/v1/prometheus/da9d7dece901db4c9fc7f5b9c40****/158120454317****/cc6df477a982145d986e3f79c985a****/cn-hangzhou" token: "eyJhxxxxx"CatatanUntuk melihat dasbor AHPA di Managed Service for Prometheus, Anda juga harus mengonfigurasi bidang berikut dalam ConfigMap ini:
prometheus_writer_url: Tetapkan ke titik akhir internal remote write.prometheus_writer_ak: Tetapkan ke ID AccessKey Akun Alibaba Cloud Anda.prometheus_writer_sk: Tetapkan ke Rahasia AccessKey Akun Alibaba Cloud Anda.
Jalankan perintah berikut untuk menerapkan application-intelligence.
kubectl apply -f application-intelligence.yaml
Integrasikan AHPA.
Masuk ke Konsol ARMS.
-
Di panel navigasi kiri, pilih .
Di bilah navigasi atas, klik Integrate Other Components. Di Integration Center, cari AHPA dan klik kartu AHPA.
Integrasikan komponen AHPA.
Pada halaman ACK AHPA, pilih Select Container Service Cluster > Select Cluster, lalu pilih kluster yang ingin Anda integrasikan dari daftar drop-down.
Konfigurasikan parameter pada bagian Configuration Information berdasarkan tabel berikut. Klik OK.
Parameter
Deskripsi
Exporter name
Nama unik untuk eksporter AHPA.
Metrics collection interval (seconds)
Interval pengumpulan data pemantauan.
Setelah Integration Status Check selesai, klik Integration Management.
Langkah 3: Deploy layanan uji coba
Layanan uji coba mencakup fib-deployment, fib-svc, dan fib-loader, yaitu layanan yang mensimulasikan puncak dan lembah permintaan, serta resource HPA untuk membandingkan hasil dengan AHPA.
Buat file bernama demo.yaml dengan konten berikut.
Jalankan perintah berikut untuk menerapkan layanan uji coba.
kubectl apply -f demo.yaml
Langkah 4: Buat resource AHPA
Kirimkan resource AdvancedHorizontalPodAutoscaler untuk mengonfigurasi kebijakan penskalaan.
Buat file bernama ahpa-demo.yaml dengan konten berikut.
apiVersion: autoscaling.alibabacloud.com/v1beta1 kind: AdvancedHorizontalPodAutoscaler metadata: name: ahpa-demo spec: scaleStrategy: observer metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 40 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: fib-deployment maxReplicas: 100 minReplicas: 2 stabilizationWindowSeconds: 300 prediction: quantile: 95 scaleUpForward: 180 instanceBounds: - startTime: "2021-12-16 00:00:00" endTime: "2031-12-16 00:00:00" bounds: - cron: "* 0-8 ? * MON-FRI" maxReplicas: 15 minReplicas: 4 - cron: "* 9-15 ? * MON-FRI" maxReplicas: 15 minReplicas: 10 - cron: "* 16-23 ? * MON-FRI" maxReplicas: 20 minReplicas: 15Tabel berikut menjelaskan beberapa parameter tersebut.
Parameter
Wajib
Deskripsi
scaleTargetRef
Ya
Menentukan Deployment target.
metrics
Ya
Mengonfigurasi metrik untuk penskalaan. Metrik yang didukung mencakup CPU, GPU, memori, QPS, dan RT.
target
Ya
Ambang batas target. Misalnya,
averageUtilization: 40berarti target utilisasi CPU adalah 40%.scaleStrategy
Tidak
Menentukan mode penskalaan. Nilai default adalah
observer.auto: AHPA mengelola penskalaan.observer: Hanya mengamati tanpa melakukan tindakan penskalaan aktual. Anda dapat menggunakan mode ini untuk memeriksa apakah AHPA berfungsi sesuai harapan.scalingUpOnly: Hanya melakukan operasi skala keluar.proactive: Hanya mengaktifkan prediksi proaktif.reactive: Hanya mengaktifkan prediksi pasif.
maxReplicas
Ya
Jumlah maksimum replika untuk skala keluar.
minReplicas
Ya
Jumlah minimum replika untuk skala-masuk.
stabilizationWindowSeconds
Tidak
Periode cooldown untuk skala-masuk. Nilai default: 300 detik.
prediction.quantile
Ya
Kuantil prediksi. Nilai yang lebih tinggi bersifat lebih konservatif karena meningkatkan probabilitas bahwa nilai metrik aktual tetap di bawah target. Nilai valid: 0 hingga 100. Nilai default: 99. Rentang yang direkomendasikan: 90 hingga 99.
prediction. scaleUpForward
Ya
Waktu yang dibutuhkan agar pod baru siap digunakan (waktu cold start).
instanceBounds
Tidak
Batas jumlah replika dalam rentang waktu tertentu.
startTime: Waktu mulai.
endTime: Waktu selesai.
instanceBounds.bounds.cron
Tidak
Ekspresi cron yang menentukan jadwal. Ekspresi cron terdiri dari lima bidang yang dipisahkan spasi. Misalnya,
- cron: "* 0-8 ? * MON-FRI"menentukan bahwa tugas dijalankan dari pukul 00.00 hingga 08.59 setiap Senin hingga Jumat.Tabel berikut menjelaskan bidang-bidang dalam ekspresi cron. Untuk informasi selengkapnya, lihat Ekspresi cron.
Bidang
Wajib
Nilai yang diizinkan
Karakter khusus yang diizinkan
Minutes
Ya
0-59
* / , -
Hours
Ya
0-23
* / , -
Day of month
Ya
1-31
* / , – ?
Month
Ya
1-12 atau JAN-DEC
* / , -
Day of week
Tidak
0-6 atau SUN-SAT
* / , – ?
CatatanNilai bidang Month dan Day of week tidak peka huruf besar/kecil. Misalnya,
SUN,Sun, dansunmemiliki efek yang sama.Jika bidang Day of week tidak dikonfigurasi, nilai default-nya adalah
*.Karakter khusus:
*: menentukan semua nilai yang mungkin./: menentukan penambahan.,: mencantumkan nilai-nilai.-: menentukan rentang.?: menentukan tidak ada nilai spesifik.
Jalankan perintah berikut untuk membuat kebijakan penskalaan AHPA.
kubectl apply -f ahpa-demo.yaml
Langkah 5: Lihat hasil prediksi
Pada halaman Integration Management, buka tab Container Service dan klik nama kluster Anda. Pilih ACK AHPA dari daftar drop-down Component Type. Terakhir, buka tab Dashboards dan klik ahpa-dashboard untuk melihat data pemantauan.
Dasbor AHPA yang disediakan oleh Managed Service for Prometheus mencakup data seperti utilisasi CPU, jumlah pod, dan jumlah pod yang diprediksi.
Grafik CPU Utilization & Actual PODs menunjukkan rata-rata utilisasi CPU dan jumlah pod untuk workload saat ini.
Grafik Actual and Predicted CPU Usage menunjukkan total penggunaan CPU pod dalam workload saat ini dibandingkan dengan penggunaan yang diprediksi. Jika penggunaan yang diprediksi lebih tinggi daripada penggunaan aktual, hal ini menunjukkan bahwa kapasitas CPU yang diprediksi sudah mencukupi.
Pada bagian Pod Trend, Anda dapat melihat jumlah pod aktual, jumlah pod yang direkomendasikan, dan jumlah pod yang diprediksi secara proaktif.
Jumlah pod aktual: Jumlah pod yang sedang berjalan.
Jumlah pod yang direkomendasikan: Jumlah akhir pod yang direkomendasikan oleh AHPA, ditentukan dengan menggabungkan prediksi proaktif, prediksi pasif, dan batas instans yang ditentukan.
Prediksi proaktif: Jumlah pod yang diprediksi berdasarkan pola siklikal yang diidentifikasi dalam data historis.
AHPA memerlukan data historis selama tujuh hari untuk menghasilkan prediksi. Setelah Anda menerapkan contoh ini, Anda harus menunggu tujuh hari untuk melihat hasil prediksi. Jika Anda memiliki workload produksi yang sudah ada, Anda dapat langsung memilih deployment-nya di dasbor AHPA.
Topik ini memberikan contoh di mana mode penskalaan dikonfigurasi dalam mode observer (mode pengamatan). Contoh ini membandingkan hasilnya dengan kebijakan HPA, yang berfungsi sebagai referensi untuk resource aktual yang dibutuhkan oleh aplikasi, guna memeriksa apakah hasil prediksi AHPA sesuai harapan.
Gambar berikut menunjukkan contoh prediksi pada dasbor Prometheus AHPA.

Deskripsi:
Actual and Predicted CPU Usage: Garis hijau merepresentasikan penggunaan CPU aktual dengan HPA, dan garis kuning merepresentasikan penggunaan CPU yang diprediksi oleh AHPA.
Jika garis kuning berada di atas garis hijau, kapasitas CPU yang diprediksi sudah mencukupi.
Jika garis kuning naik sebelum garis hijau, resource yang dibutuhkan telah dipersiapkan sebelumnya.
Pod Trend: Garis hijau merepresentasikan jumlah pod aktual yang diskalakan oleh HPA, dan garis kuning merepresentasikan jumlah pod yang diprediksi oleh AHPA.
Jika garis kuning berada di bawah garis hijau, jumlah pod yang diprediksi lebih kecil.
Jika garis kuning lebih mulus daripada garis hijau, hal ini menunjukkan bahwa penskalaan dengan AHPA menyebabkan fluktuasi yang lebih sedikit, sehingga meningkatkan stabilitas layanan.
Hasil prediksi menunjukkan bahwa tren penskalaan prediktif sesuai harapan. Jika tren ini terus memenuhi ekspektasi Anda setelah periode pengamatan, Anda dapat mengatur scaleStrategy menjadi auto agar AHPA mengelola penskalaan.
Metrik utama AHPA
Metrik | Deskripsi |
ahpa_proactive_pods | Jumlah pod berdasarkan prediksi proaktif. |
ahpa_reactive_pods | Jumlah pod berdasarkan prediksi pasif. |
ahpa_requested_pods | Jumlah pod yang direkomendasikan. |
ahpa_max_pods | Jumlah maksimum pod. |
ahpa_min_pods | Jumlah minimum pod. |
ahpa_target_metric | Ambang batas target. |