All Products
Search
Document Center

Container Service for Kubernetes:Menggunakan Horizontal Pod Autoscaling (HPA)

Last Updated:Aug 26, 2026

Aktifkan Horizontal Pod Autoscaler (HPA) untuk secara otomatis menskalakan pod berdasarkan pemanfaatan CPU, penggunaan memori, atau metrik kustom. HPA menambah jumlah replika pod guna menangani lonjakan lalu lintas dan menguranginya selama periode idle demi menghemat resource. Fitur ini ideal untuk aplikasi dengan beban kerja fluktuatif yang memerlukan penskalaan sering, seperti platform e-commerce, layanan pendidikan daring, dan aplikasi keuangan.

Sebelum memulai

Untuk menggunakan HPA secara efektif, kami menyarankan Anda membaca dokumentasi resmi Kubernetes tentang Horizontal Pod Autoscaling guna memahami prinsip dasar, algoritma, serta perilaku penskalaan yang dapat dikonfigurasi.

Selain itu, kluster Alibaba Cloud Container Service for Kubernetes (ACK) menyediakan berbagai solusi workload scaling (elastisitas lapisan penjadwalan) dan node scaling (elastisitas lapisan resource). Sebelum melanjutkan, baca Auto scaling untuk memahami kasus penggunaan dan batasan masing-masing solusi.

Prasyarat

Buat aplikasi HPA di console

ACK terintegrasi dengan HPA, memungkinkan Anda membuat aplikasi yang mendukung HPA langsung dari console. Anda dapat mengaktifkan HPA saat membuat aplikasi baru atau pada aplikasi yang sudah ada. Kami menyarankan hanya membuat satu HPA per workload.

Aktifkan HPA saat membuat aplikasi

Contoh berikut menggunakan Deployment untuk menunjukkan cara mengaktifkan HPA saat membuat aplikasi. Langkah-langkah untuk jenis workload lainnya serupa.

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

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

  3. Pada halaman Deployments, klik Create from Image.

  4. Pada halaman Create, ikuti petunjuk di layar untuk mengonfigurasi informasi dasar aplikasi, kontainer, layanan, dan penskalaan guna membuat Deployment yang mendukung HPA.

    Untuk langkah-langkah detail dan deskripsi parameter, lihat Create a stateless workload (Deployment). Bagian berikut hanya menjelaskan parameter utama.

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

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

      Fitur Resource profiling menganalisis penggunaan resource historis dan memberikan rekomendasi untuk mengonfigurasi Requests dan Limits kontainer. Untuk informasi lebih lanjut, lihat Resource profiling.

      Penting

      Anda harus menetapkan resource Requests untuk aplikasi agar HPA dapat diaktifkan.

    • Advanced Settings:

      • Pada bagian Scaling, pilih HPA's Enable, lalu konfigurasikan kondisi dan parameter penskalaan.

        • Metric: Metrik yang didukung adalah CPU dan memori. Metrik harus sesuai dengan jenis resource yang Anda tetapkan. Jika Anda menentukan kedua jenis resource (CPU dan memori), HPA akan melakukan operasi penskalaan ketika salah satu metrik mencapai ambang batas penskalaannya.

        • Trigger Condition: Ambang batas pemanfaatan resource, dinyatakan dalam persentase. Ketika pemanfaatan resource melebihi ambang ini, kontainer akan diskalakan keluar. Untuk informasi lebih lanjut tentang algoritma Horizontal Pod Autoscaling, lihat Algorithm details.

        • Max. Replicas: Jumlah maksimum replika yang dapat dicapai oleh Deployment saat diskalakan keluar. Nilai ini harus lebih besar dari jumlah replika minimum.

        • Min. Replicas: Jumlah minimum replika untuk Deployment. Nilainya harus bilangan bulat yang lebih besar dari atau sama dengan 1.

    Setelah pembuatan selesai, Anda dapat melihat Deployment yang telah dibuat di halaman Deployments. Klik nama Deployment tersebut, lalu pada halaman detail Deployment, klik tab Pod Scaling. Di bagian ini, Anda dapat melihat metrik terkait aktivitas HPA, seperti pemanfaatan CPU atau memori serta jumlah replika maksimum atau minimum, serta mengelola HPA dengan memperbarui konfigurasinya atau menonaktifkannya.

Aktifkan HPA untuk aplikasi yang sudah ada

Contoh ini menunjukkan cara mengaktifkan HPA untuk Deployment yang sudah ada. Langkah-langkah untuk jenis workload lainnya serupa.

Halaman Workload

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

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

  3. Pada halaman Deployments, klik nama aplikasi target, klik tab Pod Scaling, lalu klik Create di area HPA.

  4. Pada kotak dialog Create, konfigurasikan pengaturan penskalaan sesuai petunjuk di layar.

    • Name: Nama kebijakan HPA.

    • Metric: Klik Add.

      • Metric Name: Mendukung CPU dan memori. Metrik harus sesuai dengan jenis resource yang telah Anda konfigurasi. Jika Anda menentukan CPU dan memori, HPA akan melakukan operasi penskalaan segera setelah salah satu metrik mencapai ambang batas penskalaannya.

      • Threshold: Persentase pemanfaatan resource di atas mana kontainer mulai diskalakan keluar. Untuk informasi lebih lanjut tentang algoritma Horizontal Pod Autoscaling, lihat Algorithm details.

  • Max. Containers: Jumlah maksimum replika yang dapat dicapai oleh Deployment saat diskalakan keluar. Nilai ini harus lebih besar dari jumlah replika minimum.

  • Min. Containers: Jumlah minimum kontainer yang dapat dicapai oleh Deployment saat diskalakan turun. Nilainya harus bilangan bulat yang lebih besar dari atau sama dengan 1.

Setelah konfigurasi selesai, Anda dapat mengklik nama Deployment di halaman Stateless Application, lalu klik tab Pod Scaling pada halaman detail Deployment. Di area ini, Anda dapat melihat metrik terkait aktivitas HPA, seperti pemanfaatan CPU atau memori serta jumlah replika maksimum atau minimum, serta mengelola HPA dengan memperbarui konfigurasinya atau menonaktifkannya.

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. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workload Scaling.

  3. Di pojok kanan atas halaman, klik Create Auto Scaling, lalu klik tab HPA and CronHPA. Pilih workload target, lalu pada bagian Configure Auto Scaling Policy, pilih HPA dan konfigurasikan kebijakan HPA sesuai petunjuk.

    • Scaling Policy Name: Nama kebijakan HPA.

    • Min. Containers: Jumlah minimum replika untuk workload. Nilai ini harus bilangan bulat yang lebih besar dari atau sama dengan 1.

    • Max. Containers: Jumlah maksimum kontainer yang dapat dicapai oleh workload saat diskalakan keluar. Nilai ini harus lebih besar dari jumlah replika minimum.

    • Metric Name: Metrik yang didukung mencakup CPU, GPU, memori, permintaan Nginx Ingress, dan metrik kustom. Jenis metrik harus sesuai dengan jenis resource yang ditentukan. Jika Anda menentukan beberapa metrik, Horizontal Pod Autoscaler (HPA) akan melakukan operasi penskalaan ketika salah satu metrik mencapai ambang batasnya.

    • Threshold: Persentase pemanfaatan resource. Jika pemanfaatan melebihi nilai ini, kontainer mulai diskalakan keluar. Untuk informasi lebih lanjut tentang algoritma Horizontal Pod Autoscaling, lihat Algorithm details.

Setelah pembuatan selesai, Anda dapat melihat daftar HPA di halaman Workload Scaling. Pada kolom Actions, Anda dapat melihat metrik terkait aktivitas HPA, seperti pemanfaatan resource serta jumlah replika maksimum atau minimum, serta mengelola HPA dengan memperbarui konfigurasinya atau menonaktifkannya.

Verifikasi hasil

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

  2. Klik tab Horizontal Scaling, lalu pilih HPA untuk melihat status penskalaan dan daftar tugas.

Catatan

Di lingkungan produksi, aplikasi diskalakan berdasarkan beban pod. Anda juga dapat menjalankan uji stres pada pod di lingkungan pengujian untuk memverifikasi perilaku penskalaan horizontal.

Buat aplikasi HPA menggunakan kubectl

Anda juga dapat menggunakan template orkestrasi untuk membuat HPA secara manual dan mengikatnya ke Deployment target. Kami menyarankan hanya membuat satu HPA per workload. Contoh ini menunjukkan cara menerapkan aplikasi Nginx yang mendukung HPA.

  1. Buat file bernama nginx.yml dan salin konten berikut ke dalamnya.

    Penting

    Untuk menerapkan HPA, Anda harus menetapkan resource request untuk Pod. Jika tidak, HPA tidak dapat berjalan. Anda dapat menggunakan fitur resource profiling untuk menganalisis data penggunaan resource historis dan mendapatkan rekomendasi untuk mengonfigurasi Requests dan Limits kontainer. Untuk informasi lebih lanjut, lihat Resource profiling.

    Template YAML

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx  
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9 # Ganti dengan <image_name:tags> aktual Anda.
            ports:
            - containerPort: 80
            resources:
              requests:         # Anda harus menetapkan requests. Jika tidak, HPA tidak dapat menghitung metrik, dan statusnya akan menjadi 'unknown'.
                cpu: 500m
  2. Jalankan perintah berikut untuk membuat aplikasi Nginx.

    kubectl apply -f nginx.yml
  3. Buat file bernama hpa.yml dan salin konten berikut ke dalamnya untuk membuat HPA.

    Gunakan scaleTargetRef untuk menentukan objek target untuk HPA. Dalam contoh ini, HPA diikat ke Deployment bernama nginx dan memicu operasi penskalaan ketika rata-rata pemanfaatan CPU kontainer di semua Pod mencapai 50%.

    Kubernetes 1.24 dan versi lebih baru

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # Jumlah minimum replika untuk Deployment. Harus bilangan bulat yang lebih besar dari atau sama dengan 1.
      maxReplicas: 10  # Jumlah maksimum replika untuk Deployment. Harus lebih besar dari minReplicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # Target rata-rata pemanfaatan resource, yaitu rasio antara penggunaan resource rata-rata terhadap jumlah resource yang diminta.
                   

    Kubernetes sebelum 1.24

    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # Harus bilangan bulat yang lebih besar dari atau sama dengan 1.
      maxReplicas: 10  # Harus lebih besar dari jumlah replika minimum.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
                   

    Jika Anda perlu menentukan metrik CPU dan memori sekaligus, Anda dapat menentukan kedua jenis resource cpu dan memory di bidang metrics alih-alih membuat dua HPA. Ketika HPA mendeteksi bahwa salah satu metrik mencapai ambang batas penskalaan, HPA akan melakukan operasi penskalaan.

    metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
      - type: Resource
        resource:
          name: memory
          target:
            type: Utilization
            averageUtilization: 50
  4. Jalankan perintah berikut untuk membuat HPA.

    kubectl apply -f hpa.yml

    Pada tahap ini, jalankan perintah kubectl describe hpa <HPA name>. Dalam contoh ini, nama HPA adalah nginx-hpa. Output yang diharapkan adalah pesan peringatan berikut, yang menunjukkan bahwa HPA masih dalam proses penerapan. Anda dapat menjalankan perintah kubectl get hpa untuk memeriksa status HPA.

    Warning  FailedGetResourceMetric       2m (x6 over 4m)  horizontal-pod-autoscaler  missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5897-mqzs7
    
    Warning  FailedComputeMetricsReplicas  2m (x6 over 4m)  horizontal-pod-autoscaler  failed to get cpu utilization: missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5
  5. Setelah HPA dibuat dan Pod memenuhi kondisi penskalaan (dalam contoh ini, pemanfaatan CPU Pod Nginx melebihi 50%), jalankan kembali perintah kubectl describe hpa <HPA-name> untuk melihat status penskalaan horizontal.

    Output berikut menunjukkan bahwa HPA berjalan dengan benar.

    Type    Reason             Age   From                       Message
      ----    ------             ----  ----                       -------
      Normal  SuccessfulRescale  5m6s  horizontal-pod-autoscaler  New size: 1; reason: All metrics below target

Operasi terkait

Jika perilaku penskalaan default tidak memenuhi kebutuhan bisnis Anda, Anda dapat menggunakan bidang behavior untuk mengonfigurasi perilaku skala-turun (scaleDown) dan skala-naik (scaleUp) dengan granularitas lebih tinggi. Untuk informasi lebih lanjut, lihat Configurable scaling behavior.

Skenario khas untuk behavior mencakup, namun tidak terbatas pada:

  • Skalakan keluar secara cepat selama lonjakan traffic mendadak.

  • Skalakan keluar secara cepat tetapi skalakan masuk secara perlahan untuk workload dengan fluktuasi sering.

  • Nonaktifkan skala-masuk untuk aplikasi yang sensitif terhadap status.

  • Dalam skenario dengan keterbatasan resource atau sensitif terhadap biaya, jendela stabilisasi stabilizationWindowSeconds membatasi laju skala-keluar untuk mengurangi penyesuaian sering akibat fluktuasi sementara.

Untuk deskripsi dan contoh konfigurasi behavior, lihat Tune HPA scaling sensitivity.

FAQ

Dokumentasi terkait

Operasi terkait lainnya

Solusi workload scaling lainnya

  • Jika aplikasi Anda memiliki pola penggunaan resource periodik dan Anda perlu menskalakan pod berdasarkan jadwal, lihat Use CronHPA for scheduled horizontal scaling.

  • Jika penggunaan resource aplikasi Anda mengalami perubahan siklus yang sulit ditentukan menggunakan aturan, Anda dapat menggunakan AHPA untuk secara otomatis mengidentifikasi pola workload berdasarkan metrik historis dan melakukan auto scaling Pod. Untuk informasi lebih lanjut, lihat Auto Scaling Prediction (AHPA).

  • Untuk menetapkan batas resource pod secara otomatis berdasarkan penggunaan resource-nya, lihat Use Vertical Pod Autoscaler (VPA).

  • Untuk membuat kebijakan penskalaan fleksibel berdasarkan event dari antrian pesan, jadwal, atau metrik kustom, lihat Event-driven autoscaling.

Solusi gabungan

Anda dapat menggunakan HPA bersama fitur node auto scaling untuk secara otomatis menskalakan node kluster ketika resource tidak mencukupi. Untuk informasi lebih lanjut, lihat Enable node auto scaling.