All Products
Search
Document Center

Container Service for Kubernetes:Gunakan Knative dan AHPA untuk menerapkan penskalaan otomatis terjadwal

Last Updated:Sep 12, 2026

Layanan Knative dapat mengalami lonjakan lalu lintas yang dapat diprediksi—misalnya, jam sibuk bisnis, periode sepi semalam, atau jendela batch terjadwal. Advanced Horizontal Pod Autoscaler (AHPA) menangani kedua pola tersebut: ia memprediksi permintaan berdasarkan metrik historis (RPS, konkurensi, CPU, dan memori) serta melakukan penskalaan secara proaktif, sedangkan instanceBounds memungkinkan Anda menetapkan batas bawah dan atas jumlah replika selama jendela waktu tertentu menggunakan ekspresi cron.

Saat jendela terjadwal dimulai, AHPA menskalakan Pod hingga mencapai jumlah minimum yang ditentukan. Ketika jendela berakhir, AHPA mengembalikan skala. Hal ini menjadikan penskalaan otomatis berbasis jadwal berguna untuk memastikan jumlah replika yang memadai selama jam kerja dan memungkinkan skala kembali ke nol semalam.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Knative dideploy di kluster Anda. Untuk informasi lebih lanjut, lihat Deploy Knative.

  • AHPA dideploy. Untuk informasi lebih lanjut, lihat Deploy AHPA.

Langkah 1: Konfigurasikan metrik autoscaling dengan AHPA

Buat resource AdvancedHorizontalPodAutoscalerTemplate yang mendefinisikan metrik penskalaan prediktif dan batas replika terjadwal. Terapkan YAML berikut ke kluster Anda:

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscalerTemplate
metadata:
  name: ahpa-demo
spec:
  metrics:
  - type: Resource
    resource:
      name: rps
      target:
        type: Utilization
        averageUtilization: 10  # Lakukan scale out ketika RPS per pod melebihi 10
  maxReplicas: 50  # Batas atas global
  minReplicas: 0   # Batas bawah global (memungkinkan scale-to-zero)
  prediction:
    quantile: 95        # Gunakan prediksi persentil ke-95 untuk penskalaan konservatif
    scaleUpForward: 180 # Prediksi 180 detik ke depan agar penskalaan terjadi sebelum permintaan tiba
  instanceBounds:
  - startTime: "2023-06-01 00:00:00"  # Batas aktif mulai tanggal ini
    endTime: "2123-06-01 00:00:00"    # Batas aktif hingga tanggal ini
    bounds:
    - cron: '* 0-6 ? * *'    # Pukul 00.00 – 06.00: izinkan scale-to-zero
      maxReplicas: 50
      minReplicas: 0
    - cron: '* 7-9 ? * *'    # Pukul 07.00 – 09.00: pertahankan minimal 5 replika
      maxReplicas: 50
      minReplicas: 5
    - cron: '* 10-16 ? * *'  # Pukul 10.00 – 16.00: pertahankan minimal 10 replika
      maxReplicas: 50
      minReplicas: 10
    - cron: '* 17-23 ? * *'  # Pukul 17.00 – 23.00: pertahankan minimal 2 replika
      maxReplicas: 50
      minReplicas: 2

Parameter utama:

Parameter Wajib Deskripsi
metrics Ya Metrik yang digunakan untuk autoscaling. Nilai yang didukung: RPS, concurrency, CPU, dan memory.
maxReplicas Ya Jumlah maksimum replika yang diizinkan secara global.
minReplicas Ya Jumlah minimum replika yang harus dipertahankan secara global.
instanceBounds Tidak Rentang waktu selama AHPA memberlakukan batas replika per periode. Berisi startTime dan endTime.
bounds Tidak Batas replika per periode. Setiap entri menentukan ekspresi cron, maxReplicas, dan minReplicas.

Sintaks ekspresi cron

Ekspresi cron terdiri dari lima bidang yang dipisahkan spasi. Untuk referensi lengkap, lihat Cron expressions.

Bidang Karakter khusus Wajib Nilai valid
Menit * / , - Ya 0–59
Jam * / , - Ya 0–23
Hari dalam bulan * / , - ? Ya 1–31
Bulan * / , - Ya 1–12 atau JAN–DEC (tidak peka huruf besar/kecil)
Hari dalam minggu * / , - ? Tidak 0–6 atau SUN–SAT (tidak peka huruf besar/kecil). Jika dihilangkan, berlaku untuk hari apa pun dalam minggu.

Karakter khusus:

  • * — cocok dengan nilai apa pun (misalnya, * pada Jam berarti setiap jam)

  • / — menentukan langkah (misalnya, /5 berarti setiap 5 unit)

  • , — memisahkan nilai individual (misalnya, 1,3,5)

  • - — menentukan rentang (misalnya, 1-5)

  • ? — menunjukkan nilai variabel; hanya berlaku pada Hari dalam bulan dan Hari dalam minggu

Langkah 2: Buat layanan Knative dan aktifkan AHPA

Hubungkan AHPA ke layanan Knative dengan menambahkan dua anotasi ke manifes layanan. Ketika Anda memperbarui templat AHPA, Knative secara otomatis membuat revisi baru.

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

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

  3. Pada tab Services, atur Namespace ke default, klik Create from Template, tempel YAML berikut, lalu klik Create.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go-demo
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: ahpa.autoscaling.knative.dev          # Gunakan autoscaler AHPA
            autoscaling.knative.dev.alibabacloud/ahpa-template: "ahpa-demo"       # Referensi templat AHPA dari Langkah 1
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"

    Setelah layanan dibuat, catat alamat gateway dan nama domain-nya—Anda memerlukannya di Langkah 3.

Langkah 3: Akses layanan

Jalankan perintah berikut untuk mengirim permintaan ke layanan. Ganti nama domain dan alamat gateway dengan nilai yang dicatat di Langkah 2.

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

Output yang diharapkan:

Hello Knative!

Langkah 4 (Opsional): Verifikasi penskalaan terjadwal

Lihat tren penskalaan Pod pada Monitoring Dashboards di halaman Knative. Untuk petunjuk penyiapan, lihat View the Knative monitoring dashboard.

Catatan Managed Service for Prometheus tidak dapat mengumpulkan metrik RPS atau concurrency saat jumlah Pod bernilai nol. Anda hanya dapat melihat metrik tersebut di konsol setelah mengakses Pod aplikasi Knative. Ketika Pod sedang berjalan, metrik akan muncul di konsol tanpa langkah tambahan.
image.png

Langkah berikutnya

Konfigurasikan autoscaling berdasarkan permintaan konkuren dan RPS tanpa batas jadwal. Untuk informasi lebih lanjut, lihat Enable autoscaling to withstand traffic fluctuations.