All Products
Search
Document Center

Container Service for Kubernetes:Gunakan CronHPA untuk penskalaan Pod terjadwal

Last Updated:Aug 27, 2026

Jika penggunaan resource aplikasi Anda mengikuti pola berulang yang dapat diprediksi, Anda dapat menggunakan CronHPA (Cron Horizontal Pod Autoscaler) untuk menskalakan Pod sesuai jadwal. CronHPA ideal untuk skenario dengan puncak traffic yang dapat diprediksi atau untuk menjalankan tugas terjadwal.

Sebelum memulai

Container Service for Kubernetes (ACK) menyediakan beberapa solusi untuk workload scaling (pada lapisan penjadwalan) dan node scaling (pada lapisan resource). Sebelum memulai, baca auto scaling untuk memahami kasus penggunaan dan keterbatasan masing-masing solusi.

Templat dan parameter CronHPA

CronHPA diimplementasikan oleh kubernetes-cronhpa-controller, yaitu autoscaler Pod berbasis waktu. CronHPA menggunakan sintaks mirip cron untuk mengonfigurasi kebijakan penskalaan terjadwal, sehingga Anda dapat menyesuaikan resource secara dinamis untuk workload dengan fluktuasi traffic periodik. CronHPA dapat diterapkan pada objek Kubernetes apa pun yang mendukung scale subresource, seperti Deployments dan StatefulSets.

Lihat contoh YAML dan deskripsi parameternya

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  # Nama workload target.
  excludeDates:                 # Tanggal untuk mengecualikan eksekusi tugas penskalaan (dalam format Cron).
  - "* * * 15 11 *"             # Mengecualikan 15 November.
  - "* * * * * 5"               # Mengecualikan setiap hari Jumat.
  jobs:
  - name: "scale-down"
    schedule: "30 */1 * * * *"  # Dipicu pada detik ke-30 setiap menit (misalnya, 08:00:30, 08:01:30).
    targetSize: 1               # Jumlah replika target.
    runOnce: false              # Menentukan apakah tugas hanya dijalankan sekali. Default: false.
  - name: "scale-up"
    schedule: "0 */1 * * * *"  # Dipicu pada detik ke-0 setiap menit (misalnya, 08:00:00, 08:01:00).
    targetSize: 3              # Jumlah replika target.
    runOnce: false             

Tabel berikut menjelaskan parameter dalam konfigurasi CronHPA.

Parameter

Deskripsi

scaleTargetRef

Menentukan objek target yang akan diskalakan. CronHPA dapat menskalakan resource Kubernetes apa pun yang mendukung scale subresource.

excludeDates

Array tanggal. Tugas dilewati pada tanggal yang ditentukan dalam excludeDates. Satuan terkecil adalah hari.

"* * * * * *" merepresentasikan "<Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>".

Jika Anda tidak ingin menjalankan tugas pada 15 November, Anda dapat menentukan excludeDates seperti pada contoh berikut.

excludeDates:
  - "* * * 15 11 *"

jobs

Daftar tugas CronHPA yang dapat Anda definisikan dalam satu spesifikasi. Setiap tugas dapat dikonfigurasi dengan bidang-bidang berikut:

  • name: Nama tugas CronHPA.

  • schedule: Ekspresi cron yang menentukan kapan tugas dijalankan. Berdasarkan pustaka go-cron, sintaksnya mirip dengan crontab standar tetapi mendukung ekspresi yang lebih fleksibel. Saat membuat tugas, ikuti format berikut secara ketat.

    Format ekspresi cron adalah sebagai berikut:

    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 target untuk workload saat tugas dijalankan.

  • runOnce: Jika Anda mengatur parameter ini ke true, tugas hanya dieksekusi sekali lalu berhenti.

Langkah 1: Instal add-on CronHPA

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

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

  3. Klik tab Application Management, temukan ack-kubernetes-cronhpa-controller, lalu ikuti petunjuk di layar untuk menginstal add-on tersebut.

Langkah 2: Buat tugas CronHPA

Sebelum membuat tugas CronHPA, pastikan add-on CronHPA sedang berjalan di kluster Anda dan aplikasi target hanya memiliki satu objek HPA. Contoh berikut menunjukkan cara membuat tugas CronHPA untuk aplikasi tanpa status. Prosedurnya serupa untuk jenis workload lainnya.

Saat membuat aplikasi

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

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

  3. Di halaman Deployments, klik Create from Image.

  4. Di halaman Create, konfigurasikan informasi dasar, kontainer, layanan, dan pengaturan penskalaan terjadwal untuk membuat Deployment yang mendukung CronHPA.

    Untuk petunjuk detail dan deskripsi parameter, lihat Create a stateless workload (Deployment). Parameter utama dijelaskan di bawah ini.

    • Basic Information: Konfigurasikan nama aplikasi dan jumlah replika.

    • Container: Konfigurasikan image dan tentukan resource CPU serta memori yang dibutuhkan untuk kontainer.

    • Advanced:

      • Di bagian Scaling, centang kotak Enable untuk CronHPA. Jika add-on belum diinstal, ikuti prompt untuk menginstalnya. Lalu, konfigurasikan kondisi dan parameter penskalaan terjadwal.

        • Scheduled Task Name: Nama tugas CronHPA.

        • Desired Number of Replicas: Jumlah replika target untuk aplikasi pada waktu yang dijadwalkan.

        • Scaling Schedule: Jadwal untuk tugas penskalaan. Untuk informasi selengkapnya, lihat Kubernetes CronHPA Controller.

Untuk aplikasi yang sudah ada

Dari halaman Workloads

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

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

  3. Klik nama workload target, lalu klik tab Pod Scaling. Di bagian CronHPA, klik Create dan konfigurasikan tugas CronHPA.

    Parameter

    Deskripsi

    Job Name

    Nama tugas CronHPA.

    Desired Number of Replicas

    Jumlah replika yang menjadi target penskalaan aplikasi pada waktu yang dijadwalkan.

    Scaling Schedule

    Jadwal untuk tugas penskalaan. Untuk informasi selengkapnya tentang cara menetapkan jadwal untuk tugas CronHPA, lihat AliyunContainerService/kubernetes-cronhpa-controller.

Halaman Workload Scaling

Catatan

Halaman ini hanya tersedia untuk pengguna yang masuk daftar allowlist. Untuk meminta akses, submit a ticket.

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

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

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

  4. Klik tab HPA and CronHPA, Select Workload, lalu centang kotak CronHPA di bagian Configure Auto Scaling Policy.

    Anda dapat menambahkan beberapa tugas CronHPA. Konfigurasikan kebijakan CronHPA sesuai petunjuk, lalu klik OK.

    • CronHPA Task Name: Nama kustom untuk objek CronHPA.

    • Job Name: Nama kustom untuk tugas CronHPA.

    • Desired Number of Replicas: Jumlah replika target untuk aplikasi pada waktu yang dijadwalkan.

    • Scaling Schedule: Jadwal untuk tugas penskalaan. Untuk informasi selengkapnya, lihat Kubernetes CronHPA Controller.

Menggunakan kubectl

  1. Buat file bernama cronhpa.yaml dan salin konten berikut ke dalamnya.

    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 tugas CronHPA untuk workload yang sudah ada:

    kubectl apply -f cronhpa.yaml

    Output yang diharapkan:

    cronhorizontalpodautoscaler.autoscaling.alibabacloud.com/cronhpa-sample created

Operasi terkait

Kelola tugas CronHPA

Setelah membuat tugas CronHPA, Anda dapat melihat statusnya di daftar CronHPA. Untuk menambahkan tugas baru atau mengubah tugas yang sudah ada, gunakan salah satu metode berikut:

  • Dari halaman Workload Scaling

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

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

  • Dari halaman Workloads (menggunakan Deployment sebagai contoh)

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

    2. Di halaman Deployments, klik Details untuk Deployment target di kolom Actions, lalu klik tab Pod Scaling. Di kolom Actions bagian CronHPA, klik Add or Modify Job.

Gunakan CronHPA bersama HPA

Untuk informasi selengkapnya, lihat Make CronHPA compatible with HPA.