All Products
Search
Document Center

Container Service for Kubernetes:Gunakan CronHPA untuk penskalaan Pod terjadwal

Last Updated:Mar 27, 2026

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:

Langkah 1: Instal komponen CronHPA

Instal add-on ack-kubernetes-cronhpa-controller untuk mengaktifkan CronHPA di kluster Anda.

  1. Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Operations > Add-ons.

  3. 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-controller berjalan 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

  1. Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments.

  3. Pada halaman Deployments, klik Create from Image.

  4. 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:

  1. Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments.

  3. Pada halaman Deployments, klik Details di kolom Actions Deployment target, lalu klik tab Pod Scaling.

  4. 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.

    create

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.
  1. Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Auto Scaling > Workload Scaling.

  3. Di pojok kanan atas, klik Create Auto Scaling, pilih workload target, lalu klik tab Horizontal Scaling.

  4. 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

Parameter

Parameter Description
scaleTargetRef Workload yang akan diskalakan. Objek target harus mendukung scale subresources.
excludeDates Daftar tanggal di mana semua pekerjaan dilewati. Granularitasnya adalah satu hari. Gunakan format cron 6 bidang: "<Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>".
jobs[].name Nama pekerjaan. Harus unik dalam resource CronHPA.
jobs[].schedule Ekspresi cron yang menentukan kapan pekerjaan dijalankan. Menggunakan library Go go-cron. Lihat Format ekspresi cron.
jobs[].targetSize Jumlah replika yang dituju saat pekerjaan dijalankan.
jobs[].runOnce Jika diatur ke true, tugas hanya dijalankan sekali dan keluar setelah eksekusi pertama. Nilai default: 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?

  1. Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Applications > Helm.

  3. 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.

  4. Di panel navigasi sebelah kiri, pilih Operations > Add-ons.

  5. Pada halaman Add-ons, temukan ack-kubernetes-cronhpa-controller lalu klik Uninstall.

Langkah berikutnya

Referensi