All Products
Search
Document Center

Container Service for Kubernetes:Gunakan CronHPA untuk penskalaan terjadwal

Last Updated:Mar 05, 2026

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.

Konfigurasi YAML contoh

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  # The target workload to scale
  excludeDates:                 # Dates to skip scaling (cron format)
  - "* * * 15 11 *"             # Skip November 15th
  - "* * * * * 5"               # Skip every Friday
  jobs:
  - name: "scale-down"
    schedule: "30 */1 * * * *"  # Trigger at the 30th second of every minute (e.g. 08:00:30, 08:01:30)
    targetSize: 1               # Target replica count
    runOnce: false              # Whether to run the job only once (default: false)
  - name: "scale-up"
    schedule: "0 */1 * * * *"   # Trigger at the 0th second of every minute (e.g. 08:00:00, 08:01:00)
    targetSize: 3               # Target replica count
    runOnce: false             

Tabel berikut menjelaskan setiap parameter.

Parameter

Deskripsi

scaleTargetRef

Objek target untuk penskalaan. CronHPA mendukung resource Kubernetes apa pun yang mengimplementasikan Scale subresource.

excludeDates

Array tanggal ketika pekerjaan penskalaan harus dilewati. Satuan minimum adalah satu hari.

Format: "* * * * * *" = <Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>.

Contohnya, untuk melewatkan semua pekerjaan pada 15 November:

excludeDates:
  - "* * * 15 11 *"

jobs

Daftar pekerjaan penskalaan. Anda dapat mendefinisikan beberapa pekerjaan dalam satu spesifikasi CronHPA. Setiap pekerjaan mendukung bidang berikut:

  • name: Nama unik untuk pekerjaan tersebut.

  • schedule: Ekspresi cron yang menentukan kapan pekerjaan dijalankan. Berdasarkan library go-cron, ekspresi ini menggunakan format 6 bidang:

    Field name   | Mandatory? | Allowed values  | Allowed special characters
      ----------   | ---------- | --------------  | --------------------------
      Seconds      | Yes        | 0-59            | * / , -
      Minutes      | Yes        | 0-59            | * / , -
      Hours        | Yes        | 0-23            | * / , -
      Day of month | Yes        | 1-31            | * / , - ?
      Month        | Yes        | 1-12 or JAN-DEC | * / , -
      Day of week  | Yes        | 0-6 or SUN-SAT  | * / , - ?
  • targetSize: Jumlah replika pod yang diinginkan saat jadwal diaktifkan.

  • runOnce: Atur ke true untuk menjalankan pekerjaan hanya sekali. Setelah eksekusi pertama, pekerjaan akan berhenti. Nilai default: false.

Langkah 1: Instal add-on CronHPA

  1. Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Add-ons.

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

  1. Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.

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

  3. Pada halaman Deployments, klik Create from Image.

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

  1. Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.

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

  3. Klik workload target, lalu klik tab Pod Scaling. Pada bagian CronHPA, klik Create.

    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

  1. Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Workload Scaling.

  3. Di pojok kanan atas, klik Create Auto Scaling.

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

  1. 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: true         
  2. Jalankan perintah berikut untuk membuat CronHPA:

    kubectl apply -f cronhpa.yaml

    Output 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:

    1. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Workload Scaling.

    2. Klik tab CronHPA. Di kolom Actions, klik Edit untuk CronHPA target.

  • Dari halaman Workloads (menggunakan Deployments sebagai contoh):

    1. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Workloads > Deployments.

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