Penjadwal Horizontal Pod Autoscaler (CronHPA) menskalakan Pod sesuai jadwal mirip crontab. Gunakan CronHPA ketika lalu lintas aplikasi Anda mengikuti pola yang dapat diprediksi—misalnya, menaikkan skala sebelum jam sibuk dan menurunkan skala pada malam hari.
ACK menyediakan beberapa solusi Auto Scaling baik di lapisan penjadwalan (penskalaan workload) maupun lapisan resource (penskalaan node). Sebelum melanjutkan, baca Auto scaling untuk memahami solusi mana yang sesuai dengan kasus penggunaan Anda.
Cara kerja
CronHPA dibangun di atas kubernetes-cronhpa-controller, sebuah controller skalabilitas horizontal berbasis waktu. Pada setiap waktu pemicu terjadwal, CronHPA mengatur jumlah replika workload target menjadi targetSize. Setelah itu, CronHPA tidak melakukan tindakan lebih lanjut hingga pemicu terjadwal berikutnya dijalankan.
CronHPA menggunakan model titik-pemicu, bukan model jendela-waktu. CronHPA hanya mengatur jumlah replika sekali pada waktu pemicu dan tidak mempertahankan jumlah tersebut. Jika controller lain (seperti HPA) menyesuaikan replika di antara waktu pemicu, CronHPA tidak akan mengintervensi hingga pemicu berikutnya dijalankan.
CronHPA bekerja dengan objek Kubernetes apa pun yang mendukung scale subresources, seperti Deployment dan StatefulSet.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Kluster ACK yang dikelola atau kluster ACK Serverless. Untuk informasi selengkapnya, lihat Create an ACK Managed Cluster dan Create an ACK Serverless Cluster.
-
Klien
kubectlyang terhubung ke kluster. Untuk informasi selengkapnya, lihat Connect to Kubernetes cluster using kubectl.
Langkah 1: Instal komponen CronHPA
Instal add-on ack-kubernetes-cronhpa-controller untuk mengaktifkan CronHPA di kluster Anda.
-
Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Operations > Add-ons.
-
Pada tab Manage Applications, temukan ack-kubernetes-cronhpa-controller, klik Install, lalu ikuti petunjuk untuk menyelesaikan instalasi.
Langkah 2: Buat pekerjaan CronHPA
Sebelum membuat pekerjaan CronHPA, pastikan bahwa:
-
Komponen
ack-kubernetes-cronhpa-controllerberjalan normal di kluster. -
Workload target memiliki paling banyak satu Horizontal Pod Autoscaler (HPA) yang dikonfigurasi.
Bagian berikut menggunakan Deployment sebagai contoh. Langkah-langkahnya serupa untuk jenis workload lainnya.
Opsi 1: Buat pekerjaan CronHPA saat membuat aplikasi baru
-
Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments.
-
Pada halaman Deployments, klik Create from Image.
-
Lengkapi bagian konfigurasi Basic Information, Container, dan lainnya. Saat mencapai bagian Advanced, buka bagian Scaling, aktifkan CronHPA, lalu konfigurasikan parameter berikut: Untuk langkah dan parameter konfigurasi lainnya, lihat Create a stateless application by using a Deployment.
Parameter Description Job Name Nama pekerjaan CronHPA. Desired Number of Replicas Jumlah replika target saat waktu terjadwal tiba. Scaling Schedule Ekspresi cron yang menentukan jadwal pemicu. Lihat Format ekspresi cron.
Opsi 2: Buat pekerjaan CronHPA untuk aplikasi yang sudah ada
Halaman Workloads
Dari halaman Deployments:
-
Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments.
-
Pada halaman Deployments, klik Details di kolom Actions Deployment target, lalu klik tab Pod Scaling.
-
Di bagian CronHPA, klik Create dan konfigurasikan parameter berikut:
Parameter Description Job Name Nama pekerjaan CronHPA. Desired Number of Replicas Jumlah replika target saat waktu terjadwal tiba. Scaling Schedule Ekspresi cron yang menentukan jadwal pemicu. Lihat Format ekspresi cron. 
Halaman Workload scaling
Dari halaman Workload Scaling (memerlukan daftar izin):
Halaman Workload Scaling hanya tersedia untuk akun dalam daftar izin. Untuk meminta akses, submit a ticket.
-
Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Auto Scaling > Workload Scaling.
-
Di pojok kanan atas, klik Create Auto Scaling, pilih workload target, lalu klik tab Horizontal Scaling.
-
Pilih opsi CronHPA dan konfigurasikan parameter berikut:
Parameter Description CronHPA Name Nama resource CronHPA. Job Name Nama pekerjaan CronHPA. Desired Number of Replicas Jumlah replika target saat waktu terjadwal tiba. Scaling Schedule Ekspresi cron yang menentukan jadwal pemicu. Lihat Format ekspresi cron.
Referensi YAML CronHPA
CronHPA dikonfigurasi sebagai resource kustom CronHorizontalPodAutoscaler. Contoh berikut menurunkan skala Deployment menjadi 1 replika pada detik ke-30 setiap jam, dan menaikkan ke 3 replika tepat di awal setiap jam, dengan melewatkan tanggal 15 November dan setiap hari Jumat.
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: cronhpa-sample
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment-basic
excludeDates:
# Skip November 15th
- "* * * 15 11 *"
# Skip every Friday
- "* * * * * 5"
jobs:
- name: "scale-down"
schedule: "30 */1 * * * *"
targetSize: 1
- name: "scale-up"
schedule: "0 */1 * * * *"
targetSize: 3
runOnce: false
Format ekspresi cron
CronHPA menggunakan ekspresi cron 6 bidang (dimulai dari detik), berbeda dengan sintaks crontab standar 5 bidang.
<Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>
| Field | Required | Allowed values | Special characters |
|---|---|---|---|
| Seconds | Ya | 0–59 | * / , - |
| Minutes | Ya | 0–59 | * / , - |
| Hours | Ya | 0–23 | * / , - |
| Day of month | Ya | 1–31 | * / , - ? |
| Month | Ya | 1–12 atau JAN–DEC | * / , - |
| Day of week | Ya | 0–6 atau SUN–SAT | * / , - ? |
Contoh jadwal umum:
| Schedule | Meaning |
|---|---|
0 0 8 * * * |
Setiap hari pukul 08:00 |
0 0 18 * * 1-5 |
Hari kerja (Senin–Jumat) pukul 18:00 |
0 0 */1 * * * |
Setiap jam, tepat di awal jam |
0 30 */1 * * * |
Setiap jam, pada menit ke-30 |
0 0 8 * * 1-5 |
Hari kerja pukul 08:00 (naikkan skala untuk jam kerja) |
0 0 20 * * 1-5 |
Hari kerja pukul 20:00 (turunkan skala setelah jam kerja) |
Untuk referensi lengkap ekspresi, lihat dokumentasi kubernetes-cronhpa-controller.
Operasi tambahan
Lihat, tambah, atau edit pekerjaan CronHPA
Setelah membuat pekerjaan CronHPA, Anda dapat melihat statusnya dan mengedit konfigurasi dari titik masuk berikut:
-
Halaman Workload Scaling: Di panel navigasi sebelah kiri, pilih Auto Scaling > Workload Scaling. Pada tab Horizontal Scaling, temukan CronHPA target di bagian CronHPA lalu klik Edit di kolom Actions.
-
Halaman Deployments: Di panel navigasi sebelah kiri, pilih Workloads > Deployments. Klik Details untuk Deployment target, lalu klik tab Pod Scaling. Di bagian CronHPA, klik Add or Edit Job di kolom Actions.
Koordinasikan CronHPA dengan HPA
CronHPA dan HPA beroperasi secara independen dan tidak saling mengetahui keberadaan satu sama lain. Jika keduanya dikonfigurasi untuk workload yang sama, tindakan penskalaannya mungkin bertentangan—tindakan yang lebih baru akan menimpa tindakan sebelumnya.
Untuk mengatasi konflik ini, jika ACK mendeteksi bahwa CronHPA dan HPA keduanya diterapkan, ACK akan mengatur target penskalaan CronHPA ke HPA, sehingga memungkinkan penskalaan terjadwal untuk objek penskalaan HPA, seperti Deployment.
Untuk instruksi penyiapan, lihat Implement coordination between CronHPA and HPA.
FAQ
Bagaimana cara menguninstall ack-kubernetes-cronhpa-controller?
-
Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Applications > Helm.
-
Pada halaman Helm, periksa apakah komponen ack-kubernetes-cronhpa-controller ada.
-
Jika ada, klik Delete di kolom Actions. > Important: Menghapus komponen melalui Helm tidak menghapus Custom Resource Definition (CRD) atau resource tugas CronHPA apa pun. Hapus secara manual setelah menguninstall komponen.
-
Jika tidak ada, lanjutkan ke langkah berikutnya.
-
-
Di panel navigasi sebelah kiri, pilih Operations > Add-ons.
-
Pada halaman Add-ons, temukan ack-kubernetes-cronhpa-controller lalu klik Uninstall.
Langkah berikutnya
-
Skalakan Pod berdasarkan penggunaan CPU, memori, atau metrik kustom: Implement Horizontal Pod Autoscaler (HPA)
-
Otomatis mengidentifikasi siklus penggunaan resource dan skalakan berdasarkan metrik historis: Predictive scaling based on Advanced Horizontal Pod Autoscaling (AHPA)
-
Otomatis menyesuaikan batas resource Pod berdasarkan penggunaan aktual: Vertical Pod Autoscaler (VPA)
-
Skalakan Pod berdasarkan antrian pesan, strategi pengatur waktu, metrik kustom, dan event Kubernetes lainnya: ACK KEDA (Kubernetes Event-driven Autoscaling)