All Products
Search
Document Center

Container Compute Service:Deploy AHPA untuk prediksi resource cerdas

Last Updated:Apr 29, 2026

Alibaba Cloud Container Compute Service (ACS) mendukung Advanced Horizontal Pod Autoscaler (AHPA). AHPA menganalisis data historis dari Prometheus untuk memprediksi permintaan resource di masa depan dan secara dinamis menyesuaikan jumlah replika pod. Pendekatan ini memastikan resource diperluas dan dipra-ambil sebelum puncak trafik, sehingga meningkatkan responsivitas dan stabilitas sistem. Selama periode trafik rendah yang diprediksi, AHPA juga melakukan skala-masuk resource untuk menghemat biaya.

Informasi latar belakang

Kontroler AHPA terintegrasi dengan Managed Service for Prometheus untuk memperoleh dan memproses data metrik historis aplikasi Anda. Data ini menjadi dasar pengambilan keputusan penskalaan prediktif. Dengan menggunakan algoritma pembelajaran mesin, kontroler AHPA memprediksi jumlah instans pod yang dibutuhkan dalam 24 jam ke depan—sangat berguna untuk menangani workload dengan pola siklikal. Dengan menggabungkan strategi prediksi proaktif dan pasif, kontroler AHPA menyesuaikan jumlah instans pod agar resource dipra-ambil menjelang puncak trafik. Pendekatan ini meningkatkan responsivitas dan kinerja aplikasi sekaligus membantu Anda mengelola biaya dan menjaga stabilitas layanan. Untuk informasi selengkapnya tentang AHPA, lihat Ikhtisar AHPA.

Prasyarat

Langkah 1: Instal kontroler AHPA

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

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

  3. Pada halaman Add-ons, temukan AHPA controller dalam kategori Others dan klik Install.

Langkah 2: Konfigurasi Prometheus dan integrasikan AHPA

  1. Masuk ke Konsol ARMS.

  2. Di panel navigasi kiri, pilih Managed Service for Prometheus > Instances.

  3. Di bagian atas halaman Instances, pilih wilayah tempat instans Prometheus Anda diterapkan. Klik nama instans target, yang memiliki nama yang sama dengan kluster ACS Anda dan Instance Type berupa General. Di panel navigasi sisi kiri, klik Settings. Pada bagian HTTP API Address (Grafana Read Address), catat nilai parameter berikut.

    • Jika token diaktifkan, catat token akses.

    • Lihat dan catat titik akhir jaringan internal (Internal Network) (URL Prometheus).

  4. Tetapkan URL kueri Prometheus di kluster ACS.

    1. Buat file bernama application-intelligence.yaml dengan konten berikut.

      • prometheusUrl: Titik akhir akses instans Prometheus ARMS.

      • token: Token akses instans Prometheus.

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: application-intelligence
        namespace: kube-system
      data:
        prometheusUrl: "http://cn-hangzhou-intranet.arms.aliyuncs.com:9443/api/v1/prometheus/da9d7dece901db4c9fc7f5b9c40****/158120454317****/cc6df477a982145d986e3f79c985a****/cn-hangzhou"
        token: "eyJhxxxxx"
      Catatan

      Untuk melihat dasbor AHPA di Managed Service for Prometheus, Anda juga harus mengonfigurasi bidang berikut dalam ConfigMap ini:

      • prometheus_writer_url: Tetapkan ke titik akhir internal remote write.

      • prometheus_writer_ak: Tetapkan ke ID AccessKey Akun Alibaba Cloud Anda.

      • prometheus_writer_sk: Tetapkan ke Rahasia AccessKey Akun Alibaba Cloud Anda.

    2. Jalankan perintah berikut untuk menerapkan application-intelligence.

      kubectl apply -f application-intelligence.yaml
  5. Integrasikan AHPA.

    1. Masuk ke Konsol ARMS.

    2. Di panel navigasi kiri, pilih Managed Service for Prometheus > Instances.

    3. Di bilah navigasi atas, klik Integrate Other Components. Di Integration Center, cari AHPA dan klik kartu AHPA.

    4. Integrasikan komponen AHPA.

      1. Pada halaman ACK AHPA, pilih Select Container Service Cluster > Select Cluster, lalu pilih kluster yang ingin Anda integrasikan dari daftar drop-down.

      2. Konfigurasikan parameter pada bagian Configuration Information berdasarkan tabel berikut. Klik OK.

        Parameter

        Deskripsi

        Exporter name

        Nama unik untuk eksporter AHPA.

        Metrics collection interval (seconds)

        Interval pengumpulan data pemantauan.

    5. Setelah Integration Status Check selesai, klik Integration Management.

Langkah 3: Deploy layanan uji coba

Layanan uji coba mencakup fib-deployment, fib-svc, dan fib-loader, yaitu layanan yang mensimulasikan puncak dan lembah permintaan, serta resource HPA untuk membandingkan hasil dengan AHPA.

  1. Buat file bernama demo.yaml dengan konten berikut.

    Konten YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: fib-deployment
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: fib-deployment
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: fib-deployment
        spec:
          containers:
          - image: registry.cn-huhehaote.aliyuncs.com/kubeway/knative-sample-fib-server:20200820-171837
            imagePullPolicy: IfNotPresent
            name: user-container
            ports:
            - containerPort: 8080
              name: user-port
              protocol: TCP
            resources:
              limits:
                cpu: "1"
                memory: 2000Mi
              requests:
                cpu: "1"
                memory: 2000Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: fib-svc
      namespace: default
    spec:
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 8080
      selector:
        app: fib-deployment
      sessionAffinity: None
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: fib-loader
      namespace: default
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: fib-loader
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: fib-loader
        spec:
          containers:
          - args:
            - -c
            - |
              /ko-app/fib-loader --service-url="http://fib-svc.${NAMESPACE}?size=35&interval=0" --save-path=/tmp/fib-loader-chart.html
            command:
            - sh
            env:
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            image: registry.cn-huhehaote.aliyuncs.com/kubeway/knative-sample-fib-loader:20201126-110434
            imagePullPolicy: IfNotPresent
            name: loader
            ports:
            - containerPort: 8090
              name: chart
              protocol: TCP
            resources:
              limits:
                cpu: "8"
                memory: 16000Mi
              requests:
                cpu: "2"
                memory: 4000Mi
    ---
    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: fib-hpa
      namespace: default
    spec:
      maxReplicas: 50
      minReplicas: 1
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: fib-deployment
      targetCPUUtilizationPercentage: 50
    ---
  2. Jalankan perintah berikut untuk menerapkan layanan uji coba.

    kubectl apply -f demo.yaml

Langkah 4: Buat resource AHPA

Kirimkan resource AdvancedHorizontalPodAutoscaler untuk mengonfigurasi kebijakan penskalaan.

  1. Buat file bernama ahpa-demo.yaml dengan konten berikut.

    apiVersion: autoscaling.alibabacloud.com/v1beta1
    kind: AdvancedHorizontalPodAutoscaler
    metadata:
      name: ahpa-demo
    spec:
      scaleStrategy: observer
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 40
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: fib-deployment 
      maxReplicas: 100
      minReplicas: 2
      stabilizationWindowSeconds: 300
      prediction:
        quantile: 95
        scaleUpForward: 180
      instanceBounds:
      - startTime: "2021-12-16 00:00:00"
        endTime: "2031-12-16 00:00:00"
        bounds:
        - cron: "* 0-8 ? * MON-FRI"
          maxReplicas: 15
          minReplicas: 4
        - cron: "* 9-15 ? * MON-FRI"
          maxReplicas: 15
          minReplicas: 10
        - cron: "* 16-23 ? * MON-FRI"
          maxReplicas: 20
          minReplicas: 15

    Tabel berikut menjelaskan beberapa parameter tersebut.

    Parameter

    Wajib

    Deskripsi

    scaleTargetRef

    Ya

    Menentukan Deployment target.

    metrics

    Ya

    Mengonfigurasi metrik untuk penskalaan. Metrik yang didukung mencakup CPU, GPU, memori, QPS, dan RT.

    target

    Ya

    Ambang batas target. Misalnya, averageUtilization: 40 berarti target utilisasi CPU adalah 40%.

    scaleStrategy

    Tidak

    Menentukan mode penskalaan. Nilai default adalah observer.

    • auto: AHPA mengelola penskalaan.

    • observer: Hanya mengamati tanpa melakukan tindakan penskalaan aktual. Anda dapat menggunakan mode ini untuk memeriksa apakah AHPA berfungsi sesuai harapan.

    • scalingUpOnly: Hanya melakukan operasi skala keluar.

    • proactive: Hanya mengaktifkan prediksi proaktif.

    • reactive: Hanya mengaktifkan prediksi pasif.

    maxReplicas

    Ya

    Jumlah maksimum replika untuk skala keluar.

    minReplicas

    Ya

    Jumlah minimum replika untuk skala-masuk.

    stabilizationWindowSeconds

    Tidak

    Periode cooldown untuk skala-masuk. Nilai default: 300 detik.

    prediction.quantile

    Ya

    Kuantil prediksi. Nilai yang lebih tinggi bersifat lebih konservatif karena meningkatkan probabilitas bahwa nilai metrik aktual tetap di bawah target. Nilai valid: 0 hingga 100. Nilai default: 99. Rentang yang direkomendasikan: 90 hingga 99.

    prediction. scaleUpForward

    Ya

    Waktu yang dibutuhkan agar pod baru siap digunakan (waktu cold start).

    instanceBounds

    Tidak

    Batas jumlah replika dalam rentang waktu tertentu.

    • startTime: Waktu mulai.

    • endTime: Waktu selesai.

    instanceBounds.bounds.cron

    Tidak

    Ekspresi cron yang menentukan jadwal. Ekspresi cron terdiri dari lima bidang yang dipisahkan spasi. Misalnya, - cron: "* 0-8 ? * MON-FRI" menentukan bahwa tugas dijalankan dari pukul 00.00 hingga 08.59 setiap Senin hingga Jumat.

    Tabel berikut menjelaskan bidang-bidang dalam ekspresi cron. Untuk informasi selengkapnya, lihat Ekspresi cron.

    Bidang

    Wajib

    Nilai yang diizinkan

    Karakter khusus yang diizinkan

    Minutes

    Ya

    0-59

    * / , -

    Hours

    Ya

    0-23

    * / , -

    Day of month

    Ya

    1-31

    * / , – ?

    Month

    Ya

    1-12 atau JAN-DEC

    * / , -

    Day of week

    Tidak

    0-6 atau SUN-SAT

    * / , – ?

    Catatan
    • Nilai bidang Month dan Day of week tidak peka huruf besar/kecil. Misalnya, SUN, Sun, dan sun memiliki efek yang sama.

    • Jika bidang Day of week tidak dikonfigurasi, nilai default-nya adalah *.

    • Karakter khusus:

      • *: menentukan semua nilai yang mungkin.

      • /: menentukan penambahan.

      • ,: mencantumkan nilai-nilai.

      • -: menentukan rentang.

      • ?: menentukan tidak ada nilai spesifik.

  2. Jalankan perintah berikut untuk membuat kebijakan penskalaan AHPA.

    kubectl apply -f ahpa-demo.yaml

Langkah 5: Lihat hasil prediksi

Pada halaman Integration Management, buka tab Container Service dan klik nama kluster Anda. Pilih ACK AHPA dari daftar drop-down Component Type. Terakhir, buka tab Dashboards dan klik ahpa-dashboard untuk melihat data pemantauan.

Dasbor AHPA yang disediakan oleh Managed Service for Prometheus mencakup data seperti utilisasi CPU, jumlah pod, dan jumlah pod yang diprediksi.

  • Grafik CPU Utilization & Actual PODs menunjukkan rata-rata utilisasi CPU dan jumlah pod untuk workload saat ini.

  • Grafik Actual and Predicted CPU Usage menunjukkan total penggunaan CPU pod dalam workload saat ini dibandingkan dengan penggunaan yang diprediksi. Jika penggunaan yang diprediksi lebih tinggi daripada penggunaan aktual, hal ini menunjukkan bahwa kapasitas CPU yang diprediksi sudah mencukupi.

  • Pada bagian Pod Trend, Anda dapat melihat jumlah pod aktual, jumlah pod yang direkomendasikan, dan jumlah pod yang diprediksi secara proaktif.

    • Jumlah pod aktual: Jumlah pod yang sedang berjalan.

    • Jumlah pod yang direkomendasikan: Jumlah akhir pod yang direkomendasikan oleh AHPA, ditentukan dengan menggabungkan prediksi proaktif, prediksi pasif, dan batas instans yang ditentukan.

    • Prediksi proaktif: Jumlah pod yang diprediksi berdasarkan pola siklikal yang diidentifikasi dalam data historis.

Catatan

AHPA memerlukan data historis selama tujuh hari untuk menghasilkan prediksi. Setelah Anda menerapkan contoh ini, Anda harus menunggu tujuh hari untuk melihat hasil prediksi. Jika Anda memiliki workload produksi yang sudah ada, Anda dapat langsung memilih deployment-nya di dasbor AHPA.

Topik ini memberikan contoh di mana mode penskalaan dikonfigurasi dalam mode observer (mode pengamatan). Contoh ini membandingkan hasilnya dengan kebijakan HPA, yang berfungsi sebagai referensi untuk resource aktual yang dibutuhkan oleh aplikasi, guna memeriksa apakah hasil prediksi AHPA sesuai harapan.

Gambar berikut menunjukkan contoh prediksi pada dasbor Prometheus AHPA.

image.png

Deskripsi:

  • Actual and Predicted CPU Usage: Garis hijau merepresentasikan penggunaan CPU aktual dengan HPA, dan garis kuning merepresentasikan penggunaan CPU yang diprediksi oleh AHPA.

    • Jika garis kuning berada di atas garis hijau, kapasitas CPU yang diprediksi sudah mencukupi.

    • Jika garis kuning naik sebelum garis hijau, resource yang dibutuhkan telah dipersiapkan sebelumnya.

  • Pod Trend: Garis hijau merepresentasikan jumlah pod aktual yang diskalakan oleh HPA, dan garis kuning merepresentasikan jumlah pod yang diprediksi oleh AHPA.

    • Jika garis kuning berada di bawah garis hijau, jumlah pod yang diprediksi lebih kecil.

    • Jika garis kuning lebih mulus daripada garis hijau, hal ini menunjukkan bahwa penskalaan dengan AHPA menyebabkan fluktuasi yang lebih sedikit, sehingga meningkatkan stabilitas layanan.

Hasil prediksi menunjukkan bahwa tren penskalaan prediktif sesuai harapan. Jika tren ini terus memenuhi ekspektasi Anda setelah periode pengamatan, Anda dapat mengatur scaleStrategy menjadi auto agar AHPA mengelola penskalaan.

Metrik utama AHPA

Metrik

Deskripsi

ahpa_proactive_pods

Jumlah pod berdasarkan prediksi proaktif.

ahpa_reactive_pods

Jumlah pod berdasarkan prediksi pasif.

ahpa_requested_pods

Jumlah pod yang direkomendasikan.

ahpa_max_pods

Jumlah maksimum pod.

ahpa_min_pods

Jumlah minimum pod.

ahpa_target_metric

Ambang batas target.