All Products
Search
Document Center

Container Compute Service:Gunakan Knative dan AHPA untuk mengonfigurasi penskalaan otomatis terjadwal

Last Updated:Jun 21, 2026

Advanced Horizontal Pod Autoscaler (AHPA) dapat melakukan penskalaan prediktif berdasarkan nilai historis metrik, seperti metrik RPS, konkurensi, CPU, dan memori. AHPA dapat menskalakan sumber daya lebih awal serta mempertahankan jumlah Pod maksimum atau minimum yang ditentukan dalam periode waktu tertentu. Dengan menentukan ekspresi cron, Anda dapat menetapkan jumlah Pod maksimum dan minimum selama periode waktu tertentu.

Prasyarat

Langkah 1: Gunakan AHPA untuk mengonfigurasi metrik penskalaan otomatis

Buat ConfigMap AHPA berdasarkan konten YAML berikut dan terapkan AHPA di kluster ACS.

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
  name: ahpa-demo
spec:
  metrics:
  - type: Resource
    resource:
      name: rps
      target:
        type: Utilization
        averageUtilization: 10 # Ambang batas RPS diatur ke 10.
  maxReplicas: 50 # Jumlah maksimum Pod replikasi diatur ke 50.
  minReplicas: 0 # Jumlah minimum Pod replikasi diatur ke 0.
  prediction:
    quantile: 95 # Tingkat kepercayaan prediksi diatur ke 95%.
    scaleUpForward: 180 # Rentang waktu prediksi maju diatur ke 180 detik.
# Jumlah Pod replikasi dibatasi oleh jumlah maksimum dan minimum Pod replikasi yang didefinisikan oleh AHPA dari pukul 00:00:00 pada 1 Juni 2023 hingga 00:00:00 pada 1 Juni 2123.
  instanceBounds:
  - startTime: "2023-06-01 00:00:00"
    endTime: "2123-06-01 00:00:00"
    bounds:
# Jumlah minimum Pod replikasi adalah 0 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 00.00 hingga 06.00.
    - cron: '* 0-6 ?  * *'
      maxReplicas: 50
      minReplicas: 0
# Jumlah minimum Pod replikasi adalah 5 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 07.00 hingga 09.00.
    - cron: '* 7-9 ?  * *'
      maxReplicas: 50
      minReplicas: 5
# Jumlah minimum Pod replikasi adalah 10 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 10.00 hingga 16.00.
    - cron: '* 10-16 ?  * *'
      maxReplicas: 50
      minReplicas: 10
# Jumlah minimum Pod replikasi adalah 2 dan jumlah maksimum Pod replikasi adalah 50 dari pukul 17.00 hingga 23.00.
    - cron: '* 17-23 ?  * *'
      maxReplicas: 50
      minReplicas: 2

Parameter

Wajib

Deskripsi

metrics

Ya

Konfigurasikan metrik untuk penskalaan otomatis. Metrik RPS, konkurensi, CPU, dan memori didukung.

maxReplicas

Ya

Jumlah maksimum Pod replikasi yang diizinkan.

minReplicas

Ya

Jumlah minimum Pod replikasi yang harus dijamin.

instanceBounds

Tidak

Periode waktu di mana jumlah Pod replikasi dibatasi oleh jumlah maksimum dan minimum Pod replikasi yang didefinisikan oleh AHPA.

  • startTime: waktu mulai tugas kueri.

  • endTime: waktu akhir tugas kueri.

bounds

Tidak

Jumlah maksimum dan minimum Pod replikasi dalam periode waktu tertentu.

  • cron: ekspresi cron yang menentukan periode waktu. Anda dapat memasukkan ekspresi cron untuk mengonfigurasi CronJob.

    Untuk informasi selengkapnya tentang cara menggunakan ekspresi cron untuk mengonfigurasi CronJob atau menskalakan Pod secara otomatis, lihat bagian Bidang yang digunakan dalam ekspresi cron dan lihat definisi karakter khusus serta karakter wildcard yang digunakan dalam ekspresi cron.

  • maxReplicas: jumlah maksimum Pod replikasi.

  • minReplicas: jumlah minimum Pod replikasi.

Bidang yang digunakan dalam ekspresi cron

Bidang-bidang dalam ekspresi cron dijelaskan sebagai berikut. Untuk informasi selengkapnya, lihat Tugas terjadwal Cron.

Bidang

Karakter khusus

Wajib

Deskripsi

Menit

* / , -

Ya

Nilai valid: 0 hingga 59.

Jam

* / , -

Ya

Nilai valid: 0 hingga 23.

Hari dalam bulan

* / , – ?

Ya

Nilai valid: 1 hingga 31.

Bulan

* / , -

Ya

Nilai valid: 1 hingga 12 atau JAN hingga DEC.

Catatan

Nilai valid dari JAN hingga DEC tidak peka huruf besar/kecil.

Hari dalam minggu

* / , – ?

Tidak

Nilai valid: 0 hingga 6 atau SUN hingga SAT.

Catatan
  • Nilai valid dari SUN hingga SAT tidak peka huruf besar/kecil. Misalnya, baik SUN maupun sun menunjukkan hari Minggu.

  • Jika Anda tidak menentukan bidang Hari dalam minggu, maka berlaku untuk setiap hari dalam minggu, yang setara dengan karakter wildcard (*).

Karakter khusus yang digunakan dalam ekspresi cron:

  • Tanda bintang (*) menunjukkan nilai apa pun. Misalnya, * menunjukkan menit atau jam apa pun.

  • Garis miring (/) menunjukkan ukuran langkah. Misalnya, /5 menunjukkan setiap lima satuan waktu.

  • Koma (,) digunakan sebagai pembatas. Misalnya, 1,3,5 menunjukkan nilai 1, 3, dan 5.

  • Tanda hubung (-) digunakan dalam rentang nilai. Misalnya, 1-5 menunjukkan nilai dari 1 hingga 5.

  • Tanda tanya (?) hanya digunakan dalam bidang Hari dalam bulan dan Hari dalam minggu untuk menunjukkan nilai variabel.

Langkah 2: Buat Layanan Knative dan aktifkan AHPA untuk Layanan tersebut

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

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

  3. Pada halaman Knative, klik tab Services. Pilih default dari daftar drop-down Namespace. Klik Buat dengan Template, tempel templat YAML berikut ke editor, lalu klik Create. Ini akan membuat Layanan bernama helloworld-go-demo.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go-demo
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev # Tentukan Plugin AHPA.
            autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo" # Jika Anda mengubah parameter templat AHPA, revisi yang sesuai juga diperbarui.
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"

    Setelah Layanan dibuat, catat alamat gerbang dan nama domain Layanan tersebut, yang akan digunakan di Langkah 3: Akses Layanan.

    Pada tab Services, Anda dapat menemukan alamat gerbang (misalnya, alb-xxx.ncs.com) di bagian Access Gateway. Di daftar layanan, kolom Default Domain Name menampilkan nama domain layanan (misalnya, helloworld-go.default.example.com). Untuk mengakses Layanan, kirim permintaan ke alamat gerbang dengan header Host diatur ke nama domain default layanan.

Langkah 3: Akses Layanan

  1. Jalankan perintah berikut untuk mengakses Layanan:

    # helloworld-go-demo.default.example.com adalah nama domain default Layanan.
    # alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com adalah alamat gerbang Layanan.
    curl -H "Host: helloworld-go-demo.default.example.com" http://alb-i5lagvip6fga******.cn-shenzhen.alb.aliyuncs.com

    Hasil yang diharapkan:

    Hello Knative!

Langkah 4 (Opsional): Verifikasi penskalaan otomatis terjadwal

Pada halaman Monitoring Dashboards Knative, Anda dapat melihat tren penskalaan instans layanan Knative. Untuk informasi selengkapnya tentang Monitoring Dashboard Knative, lihat Lihat Monitoring Dashboard Layanan Knative.

Catatan
  • Jika aplikasi Knative diskalakan ke nol dan tidak memiliki Pod yang berjalan, Managed Service for Prometheus tidak dapat mengumpulkan metrik seperti konkurensi permintaan dan permintaan per detik untuk Pod tersebut. Metrik ini hanya ditampilkan di konsol setelah permintaan dikirim ke Pod aplikasi Knative.

  • Jika aplikasi Knative tidak diskalakan ke nol, konsol menampilkan metrik seperti konkurensi permintaan dan permintaan per detik untuk Pod tersebut, meskipun Pod tidak sedang menangani permintaan.

image.png

Referensi

Anda dapat mengonfigurasi penskalaan otomatis berdasarkan jumlah permintaan konkuren Pod dan konfigurasi RPS. Untuk informasi selengkapnya, lihat Aktifkan penskalaan otomatis untuk menangani fluktuasi traffic.