全部产品
Search
文档中心

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

更新时间:Jan 13, 2026

Jika ingin secara otomatis menskalakan pod berdasarkan penggunaan CPU, memori, atau metrik kustom lainnya, Anda dapat mengaktifkan fitur Horizontal Pod Autoscaler (HPA) untuk kontainer aplikasi Anda. HPA mampu dengan cepat memperluas kapasitas replika pod guna menangani lonjakan beban kerja mendadak dan melakukan skala-masuk saat beban kerja menurun untuk menghemat sumber daya. Proses ini sepenuhnya otomatis tanpa memerlukan intervensi manual. HPA cocok untuk skenario dengan fluktuasi layanan signifikan dan kebutuhan penskalaan yang sering, seperti E-dagang, pendidikan daring, dan keuangan.

Sebelum memulai

Untuk membantu Anda menggunakan fitur HPA secara optimal, baca dokumen resmi Kubernetes Horizontal Pod Autoscaling guna memahami prinsip dasar, detail algoritma, serta perilaku penskalaan yang dapat dikonfigurasi.

Selain itu, kluster ACK menyediakan berbagai solusi workload scaling (elastisitas lapisan penjadwalan) dan node scaling (elastisitas lapisan sumber daya). Sebelum melanjutkan, baca Auto Scaling untuk memahami kasus penggunaan dan keterbatasan masing-masing solusi.

Prasyarat

  • Anda telah membuat Kluster ACK yang dikelola atau Cluster khusus ACK. Untuk informasi selengkapnya, lihat Create a cluster.

  • Jika berencana menggunakan perintah kubectl untuk mengimplementasikan HPA, hubungkan ke kluster Kubernetes Anda menggunakan kubectl. Untuk informasi selengkapnya, lihat Connect to an ACK cluster using kubectl.

Buat aplikasi HPA di Konsol

Container Service for Kubernetes (ACK) terintegrasi dengan HPA, sehingga memungkinkan Anda membuat kebijakan HPA di Konsol ACK. Anda dapat membuat kebijakan HPA saat membuat aplikasi atau mengaktifkan HPA untuk aplikasi yang sudah ada. Kami menyarankan agar Anda hanya membuat satu kebijakan HPA untuk setiap workload.

Buat HPA saat membuat aplikasi

Contoh berikut menunjukkan cara mengaktifkan Horizontal Pod Autoscaler (HPA) untuk Deployment tanpa status. Langkah-langkahnya serupa untuk jenis workload lainnya.

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

  2. Pada halaman Stateless, klik Create From Image.

  3. Pada halaman Create, konfigurasikan informasi dasar, kontainer, Service, dan pengaturan penskalaan untuk aplikasi guna membuat Deployment yang mendukung HPA.

    Untuk informasi lebih lanjut mengenai langkah-langkah dan item konfigurasi, lihat Create a stateless workload (Deployment). Daftar berikut hanya menjelaskan item konfigurasi utama.

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

    • Container Configuration: Konfigurasikan citra serta sumber daya CPU dan memori yang dibutuhkan.

      Anda dapat menggunakan fitur resource profile untuk menganalisis data historis penggunaan sumber daya dan mendapatkan rekomendasi konfigurasi permintaan (requests) dan batas (limits) kontainer. Untuk informasi selengkapnya, lihat Resource profile.

      Penting

      Anda harus menetapkan resource requests untuk aplikasi. Jika tidak, Anda tidak dapat mengaktifkan HPA.

    • Advanced Configuration:

      • Pada bagian Scaling Configuration, pilih Enable untuk Metric-based Scaling dan konfigurasikan kondisi serta parameter penskalaan.

        • Metric: CPU dan memori didukung. Jenis metrik harus sesuai dengan jenis sumber daya yang Anda tetapkan dalam request. Jika Anda menentukan CPU dan memori sekaligus, HPA akan memicu operasi penskalaan ketika salah satu metrik mencapai ambang batasnya.

        • Trigger Condition: Persentase penggunaan sumber daya. Saat penggunaan yang ditentukan terlampaui, aplikasi mulai melakukan skala keluar. Untuk informasi selengkapnya mengenai algoritma horizontal pod autoscaling, lihat Algorithm details.

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

        • Minimum Replicas: Jumlah minimum replika yang dapat dicapai oleh Deployment saat melakukan skala-masuk. Nilai ini harus berupa bilangan bulat yang lebih besar dari atau sama dengan 1.

    Setelah Deployment dibuat, Anda dapat melihatnya di halaman Deployments. Klik nama Deployment tersebut, lalu klik tab Pod Scaling. Di tab ini, Anda dapat melihat metrik terkait HPA, seperti penggunaan CPU atau memori serta jumlah replika maksimum atau minimum. Anda juga dapat mengelola kebijakan HPA, misalnya dengan memperbarui konfigurasinya atau menonaktifkannya.

Buat HPA untuk aplikasi yang sudah ada

Langkah-langkah berikut menjelaskan cara mengaktifkan HPA untuk aplikasi tanpa status (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 Stateless, klik aplikasi target. Pada tab Container Scaling, klik Create di area HPA.

  3. Pada kotak dialog Create, atur konfigurasi penskalaan.

    • Name: Nama kebijakan HPA.

    • Metric: Klik Add.

      • Metric: CPU dan memori didukung. Jenis metrik harus sesuai dengan jenis sumber daya yang Anda tetapkan dalam request. Jika Anda menentukan CPU dan memori sekaligus, HPA akan memicu operasi penskalaan ketika salah satu metrik mencapai ambang batasnya.

      • Threshold: Persentase penggunaan sumber daya. Saat penggunaan yang ditentukan terlampaui, aplikasi mulai melakukan skala keluar. Untuk informasi selengkapnya mengenai algoritma horizontal pod autoscaling, lihat Algorithm details.

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

  • Minimum Containers: Jumlah minimum replika yang dapat dicapai oleh Deployment saat melakukan skala-masuk. Nilai ini harus berupa bilangan bulat yang lebih besar dari atau sama dengan 1.

Setelah konfigurasi selesai, Anda dapat mengklik nama Deployment di halaman Deployments, lalu klik tab Pod Scaling. Di tab ini, Anda dapat melihat metrik terkait HPA, seperti penggunaan CPU atau memori serta jumlah replika maksimum atau minimum. Anda juga dapat mengelola kebijakan HPA, misalnya dengan memperbarui konfigurasinya atau menonaktifkannya.

Halaman Workload Scaling

Catatan

Halaman ini hanya tersedia untuk pengguna dalam daftar putih. Untuk menggunakannya, submit a ticket.

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

  2. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. 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. Pada bagian Configure Scaling Policy, centang kotak Metric-based Auto Scaling (HPA) dan konfigurasikan kebijakan HPA.

    • Policy Name: Nama kebijakan HPA.

    • Minimum Containers: Jumlah minimum replika yang dapat dicapai oleh workload saat melakukan skala-masuk. Nilai ini harus berupa bilangan bulat yang lebih besar dari atau sama dengan 1.

    • Maximum Containers: Jumlah maksimum replika yang dapat dicapai oleh workload saat melakukan skala keluar. Nilai ini harus lebih besar dari jumlah minimum replika.

    • Metric: CPU, GPU, memori, permintaan Nginx Ingress, dan metrik kustom didukung. Jenis metrik harus sesuai dengan jenis sumber daya yang Anda tetapkan dalam request. Jika Anda menentukan beberapa jenis sumber daya, HPA akan memicu operasi penskalaan ketika salah satu metrik mencapai ambang batasnya.

    • Threshold: Persentase penggunaan sumber daya. Saat penggunaan yang ditentukan terlampaui, aplikasi mulai melakukan skala keluar. Untuk informasi selengkapnya mengenai algoritma horizontal pod autoscaling, lihat Algorithm details.

Setelah kebijakan HPA dibuat, Anda dapat melihatnya di halaman Workload Scaling. Pada kolom Actions, Anda dapat melihat metrik terkait HPA, seperti penggunaan sumber daya serta jumlah replika maksimum dan minimum. Anda juga dapat mengelola kebijakan HPA, misalnya dengan memperbarui konfigurasinya atau menonaktifkannya.

Verifikasi hasil

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

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

Catatan

Di lingkungan produksi, aplikasi diskalakan berdasarkan beban pod. Anda juga dapat melakukan uji stres pada pod di lingkungan staging untuk memverifikasi perilaku skalabilitas horizontal.

Buat aplikasi HPA menggunakan kubectl

Anda juga dapat membuat HPA secara manual dari template orkestrasi dan menyambungkannya ke objek Deployment yang ingin Anda skalakan. Kemudian, gunakan perintah kubectl untuk mengonfigurasi autoscaling untuk aplikasi tersebut. Kami menyarankan agar Anda hanya membuat satu HPA untuk setiap workload. Contoh berikut menunjukkan cara menerapkan aplikasi Nginx yang mendukung HPA.

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

    Penting

    Saat mengimplementasikan HPA, Anda harus menetapkan sumber daya request untuk pod. Jika tidak, HPA tidak dapat berjalan. Anda dapat menggunakan fitur resource profile untuk menganalisis data historis penggunaan sumber daya dan mendapatkan rekomendasi konfigurasi permintaan (requests) dan batas (limits) kontainer. Untuk informasi selengkapnya, lihat Resource profile.

    Expand to view the YAML example

    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> yang sebenarnya.
            ports:
            - containerPort: 80
            resources:
              requests:         # Anda harus menetapkan requests. Jika tidak, HPA tidak dapat melakukan perhitungan dan metrik akan ditampilkan sebagai 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 yang akan disambungkan ke HPA. Dalam contoh ini, HPA disambungkan ke Deployment bernama nginx. Operasi penskalaan dipicu ketika rata-rata penggunaan CPU semua kontainer di semua pod mencapai 50%.

    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 yang dapat dicapai oleh deployment saat melakukan skala-masuk. Harus berupa bilangan bulat yang lebih besar dari atau sama dengan 1.
      maxReplicas: 10  # Jumlah maksimum replika yang dapat dicapai oleh deployment saat melakukan skala keluar. Harus lebih besar dari minReplicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # Target rata-rata pemanfaatan sumber daya. Ini adalah rasio antara rata-rata penggunaan sumber daya terhadap jumlah sumber daya yang diminta.
                   

    Versi 1.24 dan sebelumnya

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

    Untuk menentukan metrik CPU dan memori sekaligus, tentukan kedua jenis sumber daya cpu dan memory dalam bidang metrics alih-alih membuat dua HPA. Ketika HPA mendeteksi bahwa salah satu metrik mencapai ambang batasnya, operasi penskalaan akan dipicu.

    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 titik ini, jalankan kubectl describe hpa <HPA_name>. Dalam contoh ini, nama HPA adalah nginx-hpa. Pesan peringatan yang diharapkan 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. Tunggu hingga HPA selesai dibuat dan pod memenuhi kondisi penskalaan. Dalam contoh ini, kondisi terpenuhi ketika penggunaan CPU pod Nginx melebihi 50%. Kemudian, jalankan perintah kubectl describe hpa <HPA_name> lagi untuk memeriksa status skalabilitas horizontal.

    Output yang diharapkan menunjukkan bahwa HPA berjalan sesuai harapan.

    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-masuk (scaleDown) dan skala keluar (scaleUp) dengan granularitas lebih tinggi. Untuk informasi selengkapnya, lihat Configurable scaling behavior.

Skenario khas yang didukung oleh konfigurasi behavior meliputi, namun tidak terbatas pada:

  • Mencapai skala keluar cepat selama lonjakan traffic mendadak.

  • Menerapkan skala keluar cepat dan skala-masuk lambat dalam skenario dengan fluktuasi beban yang sering.

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

  • Dalam skenario dengan sumber daya terbatas atau sensitif biaya, menggunakan jendela stabilisasi stabilizationWindowSeconds untuk membatasi kecepatan skala keluar dan mengurangi penyesuaian berulang akibat fluktuasi sementara.

Untuk informasi selengkapnya mengenai konfigurasi behavior dan contoh konfigurasinya, lihat Adjust the scaling sensitivity of HPA.

FAQ

Referensi

Dokumen terkait lainnya

Solusi workload scaling lainnya

  • Jika penggunaan sumber daya aplikasi Anda berubah secara periodik dan Anda perlu menskalakan pod berdasarkan kebijakan mirip Crontab, lihat Use CronHPA for scheduled horizontal scaling.

  • Jika penggunaan sumber daya aplikasi Anda berubah secara periodik tetapi sulit didefinisikan dengan aturan, Anda dapat menggunakan Advanced Horizontal Pod Autoscaling (AHPA). AHPA secara otomatis mengidentifikasi siklus bisnis berdasarkan metrik historis untuk menskalakan pod. Untuk informasi selengkapnya, lihat Predictive scaling (AHPA).

  • Untuk secara otomatis menetapkan batas sumber daya untuk pod berdasarkan penggunaan sumber dayanya agar pod menerima sumber daya komputasi yang cukup, lihat Use Vertical Pod Autoscaling (VPA).

  • Untuk secara fleksibel menyesuaikan kebijakan penskalaan pod berdasarkan event Kubernetes seperti antrian pesan, kebijakan terjadwal, dan metrik kustom, lihat Event-driven autoscaling.

Solusi gabungan

Anda dapat menggunakan HPA bersama fitur node autoscaling untuk secara otomatis menskalakan node ketika sumber daya node kluster tidak mencukupi. Untuk informasi selengkapnya, lihat Enable node autoscaling.