全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan CronHPA untuk Penskalaan Horizontal Terjadwal

更新时间:Jul 02, 2025

Jika pemanfaatan sumber daya aplikasi Anda menunjukkan perubahan periodik dan Anda perlu menskalakan pod berdasarkan jadwal seperti Crontab, Anda dapat menggunakan Cron Horizontal Pod Autoscaler (CronHPA) untuk mencapai penjadwalan penskalaan. CronHPA cocok untuk skenario di mana lalu lintas bisnis memiliki periode puncak yang signifikan atau aplikasi perlu menjalankan tugas pada waktu tertentu.

Tips pra-baca

Kluster ACK menawarkan berbagai solusi penskalaan beban kerja (elastisitas lapisan penjadwalan) dan penskalaan node (elastisitas lapisan sumber daya). Kami merekomendasikan Anda membaca Penskalaan Otomatis sebelum menggunakan topik ini untuk memahami skenario yang sesuai dan batasan penggunaan dari berbagai solusi.

Prasyarat

Template dan parameter CronHPA

CronHPA diimplementasikan berdasarkan kubernetes-cronhpa-controller. Kubernetes-cronhpa-controller adalah pengontrol penskalaan horizontal pod berbasis waktu yang menskalakan kluster berdasarkan jadwal mirip crontab, seperti secara otomatis meningkatkan jumlah pod selama jam sibuk hari kerja dan mengurangi jumlah pod selama jam tidak sibuk. CronHPA dapat diterapkan pada objek Kubernetes apa pun yang mendukung sub-sumber daya penskalaan, seperti Deployment dan StatefulSet.

Perluas untuk Melihat Contoh YAML CronHPA dan Parameter

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:
   # kecualikan tanggal 15 November
   - "* * * 15 11 *"
   # kecualikan setiap hari Jumat 
   - "* * * * * 5"
   jobs:
   - name: "skala turun"
     schedule: "30 */1 * * * *"
     targetSize: 1
   - name: "skalabilitas vertikal"
     schedule: "0 */1 * * * *"
     targetSize: 3
     runOnce: false

Parameter

Deskripsi

scaleTargetRef

Menentukan objek yang akan diskalakan. Jika objek mendukung sub-sumber daya Scale, CronHPA dapat mendukungnya.

excludeDates

Array tanggal. Tugas dilewati pada tanggal yang sesuai dengan deskripsi excludeDates. Unit: hari.

"* * * * * *" mewakili "<Detik> <Menit> <Jam> <Hari dalam bulan> <Bulan> <Hari dalam minggu>".

Jika Anda ingin mengecualikan tugas pada tanggal 15 November, tentukan excludeDates seperti yang ditunjukkan dalam contoh berikut.

excludeDates:
  - "* * * 15 11 *"

jobs

Mendukung pengaturan beberapa tugas CronHPA dalam satu spec. Setiap tugas CronHPA memiliki parameter berikut:

  • name: Harus unik dalam CronHPA, memungkinkan tugas berbeda dibedakan oleh name.

  • schedule: Kebijakan serupa dengan Crontab. Kubernetes-cronhpa-controller menggunakan pustaka Golang (go-cron) yang mendukung lebih banyak aturan ekspresi. Atur dengan ketat sesuai dengan deskripsi format di bawah ini. Jika tidak, pembuatan gagal.

    Format ekspresi Cron adalah sebagai berikut:

    Nama bidang   | Wajib? | Nilai yang diizinkan  | Karakter khusus yang diizinkan
      ----------   | ---------- | --------------  | --------------------------
      Detik        | Ya         | 0-59            | * / , -
      Menit        | Ya         | 0-59            | * / , -
      Jam          | Ya         | 0-23            | * / , -
      Hari dalam bulan | Ya   | 1-31            | * / , - ?
      Bulan        | Ya         | 1-12 atau JAN-DES | * / , -
      Hari dalam minggu | Ya | 0-6 atau MIN-SAB | * / , - ?
  • targetSize: Mengatur jumlah pod yang akan diskalakan selama penjadwalan.

  • runOnce: Ketika disetel ke true, tugas hanya dieksekusi sekali dan keluar setelah eksekusi pertama.

Langkah 1: Instal komponen CronHPA

Anda dapat menginstal komponen CronHPA ack-kubernetes-cronhpa-controller untuk mencapai penskalaan terjadwal beban kerja aplikasi.

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

  2. Pada halaman Clusters, temukan yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, klik Add-ons.

  3. Klik tab Manage Applications, temukan ack-kubernetes-cronhpa-controller, klik Install, dan ikuti petunjuk halaman untuk menyelesaikan instalasi komponen.

Langkah 2: Buat Tugas CronHPA

Sebelum membuat dan menjalankan CronHPA untuk aplikasi, pastikan bahwa komponen CronHPA di kluster berjalan normal dan bahwa hanya ada satu objek tugas HPA untuk aplikasi saat ini. Contoh berikut menunjukkan cara mengaktifkan CronHPA untuk aplikasi tanpa status. Langkah-langkah untuk jenis beban kerja lainnya serupa.

Buat pekerjaan CronHPA saat membuat aplikasi

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

  2. Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel kiri, pilih Workloads > Deployments.

  3. Pada halaman Deployments, klik Create from Image.

  4. Pada halaman Create, ikuti petunjuk halaman untuk menyelesaikan konfigurasi informasi dasar aplikasi, konfigurasi kontainer, konfigurasi layanan, dan konfigurasi penskalaan terjadwal untuk membuat Deployment yang mendukung CronHPA.

    Untuk informasi lebih lanjut tentang langkah-langkah dan parameter, lihat Buat Aplikasi Tanpa Status Menggunakan Deployment. Berikut ini hanya memperkenalkan parameter utama.

    • Basic Information: Konfigurasikan informasi dasar aplikasi, seperti nama dan jumlah replika.

    • Container: Konfigurasikan gambar, CPU, dan sumber daya memori yang diperlukan oleh kontainer.

    • Advanced:

      • Di bagian Access Control, klik Create yang sesuai dengan Service untuk mengonfigurasi layanan.

      • Di bagian Scaling, centang Enable untuk CronHPA, ikuti petunjuk halaman untuk menginstal komponen (abaikan jika sudah diinstal), dan kemudian konfigurasikan kondisi dan parameter untuk penskalaan terjadwal.

        • Job Name: Nama tugas CronHPA.

        • Desired Number of Replicas: Saat waktu yang dijadwalkan tercapai, jumlah replika aplikasi secara otomatis diskalakan ke nilai ini.

        • Scaling Schedule: Tetapkan periode penjadwalan. Untuk informasi lebih lanjut tentang menetapkan periode penjadwalan untuk pekerjaan CronHPA, lihat AliyunContainerService/kubernetes-cronhpa-controller.

Buat pekerjaan CronHPA untuk aplikasi yang ada

Buat di halaman Beban Kerja

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

  2. Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel kiri, pilih Workloads > Deployments.

  3. Pada halaman Deployments, klik Details di kolom Actions deployment target, lalu klik tab Pod Scaling. Di bagian CronHPA, ikuti petunjuk halaman untuk menginstal komponen CronHPA (abaikan jika sudah diinstal) dan klik Create untuk mengonfigurasi CronHPA.

    create

    Parameter

    Deskripsi

    Job Name

    Nama pekerjaan CronHPA.

    Desired Number of Replicas

    Saat waktu yang dijadwalkan tercapai, jumlah replika aplikasi secara otomatis diskalakan ke nilai ini.

    Scaling Schedule

    Periode penjadwalan yang ditetapkan. Untuk informasi lebih lanjut tentang menetapkan periode penjadwalan untuk pekerjaan CronHPA, lihat AliyunContainerService/kubernetes-cronhpa-controller.

Buat di halaman Penskalaan Beban Kerja

Catatan

Halaman Penskalaan Beban Kerja hanya tersedia untuk pengguna dalam daftar putih. Jika Anda ingin menggunakan halaman ini, ajukan tiket.

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

  2. Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, klik Workload Scaling.

  3. Di sudut kanan atas halaman, klik Create Auto Scaling, pilih beban kerja target, lalu centang opsi CronHPA di bawah tab Horizontal Scaling. Ikuti petunjuk halaman untuk menginstal komponen (abaikan jika sudah diinstal) dan konfigurasikan kebijakan CronHPA.

    • CronHPA Name: Masukkan nama CronHPA.

    • Job Name: Masukkan nama job CronHPA.

    • Desired Number of Replicas: Saat waktu yang dijadwalkan tercapai, jumlah replika aplikasi secara otomatis diskalakan ke nilai ini.

    • Scaling Schedule: Tetapkan periode penjadwalan. Untuk informasi lebih lanjut tentang menetapkan periode penjadwalan untuk tugas CronHPA, lihat AliyunContainerService/kubernetes-cronhpa-controller.

Operasi terkait

Lihat, tambahkan, atau modifikasi pekerjaan CronHPA

Setelah membuat pekerjaan CronHPA, Anda dapat melihat status dan daftar pekerjaan CronHPA di daftar CronHPA. Anda dapat menambahkan pekerjaan CronHPA atau memodifikasi konfigurasi CronHPA yang ada melalui titik masuk berikut.

  • Titik Masuk Penskalaan Beban Kerja

    1. Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, klik Workload Scaling.

    2. Di bagian CronHPA di bawah tab Horizontal Scaling, klik Edit di kolom Actions.

  • Titik Masuk Beban Kerja (menggunakan aplikasi tanpa status sebagai contoh, langkah-langkah untuk jenis beban kerja lainnya serupa)

    1. Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel kiri, pilih Workloads > Deployments.

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

Implementasikan koordinasi antara CronHPA dan HPA

Cron Horizontal Pod Autoscaler (HPA) dan Horizontal Pod Autoscaler (HPA) tidak saling menyadari. Jika baik CronHPA maupun HPA dikonfigurasikan untuk aplikasi Anda, CronHPA dan HPA akan menskalakan aplikasi Anda secara terpisah. Dalam kasus ini, aktivitas penskalaan terakhir akan menimpa yang sebelumnya. Untuk menyelesaikan masalah ini, Container Service for Kubernetes (ACK) menyediakan solusi bagi CronHPA untuk berinteraksi dengan HPA tanpa konflik. Jika ACK mendeteksi bahwa baik CronHPA maupun HPA diterapkan, ACK menetapkan HPA sebagai objek penskalaan CronHPA. CronHPA memicu HPA untuk menskalakan objek yang diskalakan oleh HPA, seperti Deployment, pada waktu yang dijadwalkan.

Untuk informasi lebih lanjut, lihat Implementasikan Koordinasi Antara CronHPA dan HPA.

FAQ

Bagaimana cara menghapus ack-kubernetes-cronhpa-controller?

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

  2. Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel navigasi kiri, pilih Applications > Helm.

  3. Pada halaman Helm, periksa apakah komponen ack-kubernetes-cronhpa-controller ada.

    • Jika ada, klik Delete di kolom Actions di sebelah kanan komponen.

      Penting

      Menghapus komponen melalui Helm tidak akan menghapus CRD dan sumber daya Tugas yang telah dibuat. Untuk sepenuhnya menghapus sumber daya terkait CronHPA, hapus secara manual.

    • Jika tidak ada, lanjutkan ke langkah berikutnya.

  4. Di halaman detail, di panel navigasi kiri, pilih Operations > Add-ons.

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