Jika penggunaan resource aplikasi Anda mengikuti pola periodik yang dapat diprediksi, gunakan Cron Horizontal Pod Autoscaler (CronHPA) untuk menskalakan pod pada waktu tertentu. Penjadwalan semacam ini ideal untuk skenario dengan puncak traffic berulang atau pekerjaan latar belakang terjadwal.
Sebelum memulai
ACK menyediakan beberapa solusi penskalaan baik di lapisan penjadwalan (workload) maupun resource (node). Sebelum melanjutkan, baca Auto Scaling untuk menentukan strategi terbaik sesuai kasus penggunaan Anda.
Cara kerja CronHPA
CronHPA didukung oleh kubernetes-cronhpa-controller, sebuah controller penskalaan pod berbasis waktu. CronHPA menggunakan sintaks mirip crontab untuk menyesuaikan resource secara dinamis, sehingga ideal untuk workload dengan fluktuasi traffic periodik. CronHPA bekerja dengan objek Kubernetes apa pun yang mendukung Scale subresource, seperti Deployments dan StatefulSets.
Langkah 1: Instal add-on CronHPA
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Add-ons.
Klik tab Manage Applications, temukan ack-kubernetes-cronhpa-controller, lalu instal add-on tersebut sesuai petunjuk.
Langkah 2: Buat pekerjaan CronHPA
Sebelum membuat pekerjaan CronHPA, pastikan CronHPA sedang berjalan dan workload target hanya memiliki satu objek HPA yang terkait dengannya. Contoh berikut menggunakan Deployment. Langkah-langkahnya serupa untuk jenis workload lainnya.
Opsi 1: Buat pekerjaan CronHPA saat membuat workload
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
Pada halaman Deployments, klik Create from Image.
Pada halaman Create, konfigurasikan pengaturan untuk membuat Deployment yang mendukung CronHPA.
Untuk instruksi konfigurasi lengkap, lihat Buat workload tanpa status (Deployment).
Basic Information: Tetapkan nama aplikasi dan jumlah replika.
Container: Tentukan container image serta permintaan resource CPU dan memori.
Advanced:
Pada bagian Scaling, aktifkan CronHPA. Instal add-on jika diminta, lalu konfigurasikan parameter penskalaan:
Job Name: Nama unik untuk pekerjaan CronHPA.
Desired Number of Replicas: Jumlah replika pod yang akan diskalakan pada waktu terjadwal.
Scaling Schedule: Ekspresi cron yang menentukan jadwal penskalaan. Untuk informasi lebih lanjut, lihat kubernetes-cronhpa-controller.
Opsi 2: Buat pekerjaan CronHPA untuk workload yang sudah ada
Workload page
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
Klik workload target, lalu klik tab Pod Scaling. Pada bagian CronHPA, klik Create.

Parameter
Deskripsi
Job Name
Nama unik untuk pekerjaan CronHPA.
Desired Number of Replicas
Jumlah replika pod yang akan diskalakan pada waktu terjadwal.
Scaling Schedule
Ekspresi cron yang menentukan jadwal penskalaan. Untuk informasi lebih lanjut, lihat kubernetes-cronhpa-controller.
Halaman penskalaan workload
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Workload Scaling.
Di pojok kanan atas, klik Create Auto Scaling.
Klik tab HPA and CronHPA, pilih workload target, lalu pilih CronHPA pada bagian Configure Auto Scaling Policy.
Anda dapat menambahkan beberapa pekerjaan CronHPA. Konfigurasikan parameter berikut lalu klik OK.
CronHPA Task Name: Nama untuk objek CronHPA.
Job Name: Nama untuk pekerjaan CronHPA individual.
Desired Number of Replicas: Jumlah replika pod yang diinginkan pada waktu terjadwal.
Scaling Schedule: Ekspresi cron yang menentukan jadwal penskalaan. Untuk informasi lebih lanjut, lihat kubernetes-cronhpa-controller.
kubectl
Simpan manifes berikut ke file bernama
cronhpa.yaml:apiVersion: autoscaling.alibabacloud.com/v1beta1 kind: CronHorizontalPodAutoscaler metadata: name: cronhpa-sample namespace: default spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx-deployment-basic excludeDates: - "* * * 15 11 *" - "* * * * * 5" jobs: - name: "scale-down" schedule: "30 */1 * * * *" targetSize: 1 runOnce: false - name: "scale-up" schedule: "0 */1 * * * *" targetSize: 3 runOnce: trueJalankan perintah berikut untuk membuat CronHPA:
kubectl apply -f cronhpa.yamlOutput yang diharapkan:
cronhorizontalpodautoscaler.autoscaling.alibabacloud.com/cronhpa-sample created
Langkah selanjutnya
Lihat, tambahkan, atau ubah pekerjaan CronHPA
Setelah membuat CronHPA, Anda dapat melihat status pekerjaan, menambahkan pekerjaan baru, atau mengubah konfigurasi yang ada dengan salah satu metode berikut:
Dari halaman Workload Scaling:
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Workload Scaling.
Klik tab CronHPA. Di kolom Actions, klik Edit untuk CronHPA target.
Dari halaman Workloads (menggunakan Deployments sebagai contoh):
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
Klik Deployment target, lalu klik tab Pod Scaling. Di bagian CronHPA, klik Add or Modify Job di kolom Actions.
Gunakan CronHPA bersama HPA
Cron Horizontal Pod Autoscaler (CronHPA) dan Horizontal Pod Autoscaler (HPA) tidak saling mengetahui keberadaan satu sama lain. Jika keduanya dikonfigurasi untuk aplikasi Anda, CronHPA dan HPA akan menskalakan aplikasi secara terpisah. Dalam kasus ini, aktivitas penskalaan yang terjadi belakangan akan menimpa yang sebelumnya. Untuk mengatasi masalah ini, Container Service for Kubernetes (ACK) menyediakan solusi agar CronHPA dapat berinteraksi dengan HPA tanpa konflik. Jika ACK mendeteksi bahwa CronHPA dan HPA keduanya diterapkan, ACK akan menetapkan HPA sebagai objek penskalaan dari CronHPA. CronHPA kemudian memicu HPA untuk menskalakan objek yang dikelola HPA, seperti Deployment, pada waktu terjadwal.
Untuk informasi lebih lanjut, lihat Buat CronHPA kompatibel dengan HPA.