Advanced Horizontal Pod Autoscaler (AHPA) adalah komponen ACK yang menambahkan kemampuan autoscaling prediktif pada workload Kubernetes. Berbeda dengan Horizontal Pod Autoscaler (HPA) standar yang hanya bereaksi terhadap metrik setelah terjadi lonjakan, AHPA menghilangkan keterlambatan tersebut dengan menggabungkan prediksi proaktif berbasis pembelajaran mesin dan prediksi pasif berbasis data real-time, sehingga Pod siap sebelum trafik tiba.
Instal AHPA Controller untuk mengaktifkan fitur autoscaling prediktif.
Cara kerja
AHPA menjalankan dua jalur autoscaling komplementer secara paralel:
Proactive prediction: AHPA menganalisis data metrik historis menggunakan algoritma pembelajaran mesin dari Akademi DAMO dan memprediksi kebutuhan Pod hingga 24 jam ke depan. Pod disiapkan sebelum lonjakan trafik yang diprediksi tiba. Jalur ini efektif untuk aplikasi dengan pola lalu lintas periodik—seperti puncak harian, siklus mingguan, dan ritme serupa.
Passive prediction: Ketika metrik real-time menyimpang dari garis dasar yang diprediksi—misalnya, selama lonjakan trafik tak terduga—AHPA segera menyesuaikan jumlah Pod berdasarkan data saat ini. Jalur ini berfungsi sebagai jaring pengaman untuk perubahan beban yang tidak dapat diprediksi.
Service degradation memungkinkan Anda menetapkan jumlah Pod maksimum dan minimum dalam satu atau beberapa jendela waktu tertentu.
Gambar berikut menunjukkan arsitektur AHPA.
Arsitektur tersebut terdiri dari modul-modul berikut:
| Modul | Peran |
|---|---|
| Algoritma ML Akademi DAMO | Menganalisis metrik historis untuk memprediksi kebutuhan Pod di masa depan hingga 24 jam ke depan |
| Proactive predictor | Menjadwalkan pre-scaling berdasarkan prediksi ML |
| Passive predictor | Memantau metrik real-time dan memicu scaling langsung ketika penyimpangan melebihi garis dasar yang diprediksi |
| Scaling executor | Menerapkan keputusan scaling ke Knative, HPA, atau Penyebaran (Deployment) |
| Lapisan service degradation | Memberlakukan konfigurasi jumlah Pod min/maks dalam jendela waktu tertentu |
Metrik yang didukung
AHPA mendukung jenis metrik berikut: CPU, memory, QPS (queries per second), RT (response time), dan metrik eksternal.
Metode scaling
AHPA menerapkan keputusan autoscaling melalui tiga jenis target:
| Target | Paling cocok untuk |
|---|---|
| Knative | Workload arsitektur tanpa server; mengatasi masalah cold start; melakukan scaling berdasarkan konkurensi, QPS, atau RT |
| HPA | Workload Kubernetes standar; konfigurasi kebijakan lebih sederhana; juga menangani cold start |
| Deployment | Scaling Deployment langsung tanpa resource HPA perantara |
Untuk kluster ACK Serverless tempat semua Pod berjalan pada elastic container instance, AHPA mengaktifkan autoscaling zero-node—kluster melakukan autoscaling pada level Pod tanpa mengelola kapasitas node.
Prinsip desain
AHPA dibangun berdasarkan tiga prinsip:
Stabil: Pemicu autoscaling hanya aktif ketika aplikasi berada dalam kondisi stabil.
O&M-free: Tidak diperlukan controller tambahan di sisi klien. Sintaksis konfigurasi AHPA lebih sederhana daripada HPA.
Berorientasi serverless: Fokus utama adalah pada Pod, bukan pada pemanfaatan resource node, sehingga AHPA sangat sesuai untuk lingkungan arsitektur tanpa server dan elastic container instance.
Catatan penggunaan
Untuk detail konfigurasi, prasyarat, dan contoh YAML, lihat Ikhtisar AHPA.
Catatan rilis
April 2024
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v2.6.0-aliyun.1 | 2024-04-16 | Mengoptimalkan tautan pengumpulan metrik yang menggunakan metrics-server. | Lakukan pembaruan selama jam sepi. |
Maret 2024
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v2.5.6-aliyun.1 | 2024-03-20 | Memperbaiki panic yang disebabkan oleh pemrosesan metrik kustom. | Lakukan pembaruan selama jam sepi. |
Desember 2023
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v2.5.0-aliyun.1 | 2023-12-25 | Menambahkan dukungan untuk konfigurasi PromQL kustom dan Elastic Workload. Meningkatkan output kubectl untuk menampilkan apakah fitur periodik aktif. | Lakukan pembaruan selama jam sepi. |
Oktober 2023
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v2.4.0-aliyun.1 | 2023-10-16 | Menambahkan dukungan untuk multiple metrics dalam passive prediction. Meningkatkan output kubectl untuk menampilkan multiple metrik AHPA. Memperbaiki masalah di mana modifikasi pada objek yang ditentukan oleh TargetRef tidak berlaku. | Lakukan pembaruan selama jam sepi. |
Juli 2023
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v2.3.0-aliyun.1 | 2023-07-12 | Menambahkan dukungan untuk metrik kustom. Meningkatkan output kubectl untuk menampilkan jenis resource yang direferensikan. | Lakukan pembaruan selama jam sepi. |
Juni 2023
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v2.2.0-aliyun.1 | 2023-06-19 | Menambahkan dukungan metrik konkurensi untuk penskalaan prediktif, mengoptimalkan logika pemrosesan pasif Knative, serta meningkatkan latensi kueri metrik CPU dan memori secara waktu nyata. | Lakukan pembaruan selama jam sepi. |
April 2023
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v2.1.0-aliyun.1 | 2023-04-26 | Menambahkan dukungan Dasbor Prometheus. Menambahkan dukungan untuk rentang waktu yang dapat dikustomisasi untuk metrik historis. | Lakukan pembaruan selama jam sepi. |
Juli 2022
| Versi | Tanggal rilis | Deskripsi | Dampak |
|---|---|---|---|
| v1.0.0-aliyun.1 | 2022-07-13 | Rilis awal. Mendukung metrik CPU, memory, RT, dan QPS untuk scaling prediktif. Mendukung scaling melalui Deployments, HPA, dan Knative. | Tidak berdampak pada workload. |