全部产品
Search
文档中心

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

更新时间:Dec 03, 2025

Anda dapat mengaktifkan fitur Horizontal Pod Autoscaler (HPA) pada kontainer aplikasi untuk secara otomatis menyesuaikan jumlah pod berdasarkan penggunaan CPU, memori, atau metrik kustom lainnya. HPA secara otomatis menambah replika pod guna menangani lonjakan beban kerja mendadak dan mengurangi replika saat beban menurun guna menghemat sumber daya. Proses ini sepenuhnya otomatis dan ideal untuk layanan dengan fluktuasi beban kerja signifikan yang memerlukan penskalaan berkala, seperti e-commerce, pendidikan daring, dan layanan keuangan.

Sebelum memulai

Sebelum menggunakan fitur HPA, disarankan membaca dokumentasi resmi Kubernetes tentang Horizontal Pod Autoscaling untuk memahami prinsip dasar, detail algoritma, serta perilaku penskalaan yang dapat dikonfigurasi.

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

Buat aplikasi HPA di konsol

Container Service for Kubernetes (ACK) terintegrasi dengan HPA, sehingga memungkinkan Anda membuat aplikasi HPA melalui konsol ACK. Anda dapat mengaktifkan HPA saat membuat aplikasi baru atau pada aplikasi yang sudah ada. Disarankan hanya membuat satu HPA untuk setiap workload.

Buat HPA saat membuat aplikasi

Langkah-langkah berikut menggunakan deployment tanpa status sebagai contoh untuk mengaktifkan HPA pada aplikasi. Prosedur untuk jenis workload lainnya serupa.

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

  2. Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, pilih Workloads > Deployments.

  3. Pada halaman Stateless, klik Create From Image.

  4. Pada halaman Create, konfigurasikan informasi dasar aplikasi serta pengaturan untuk kontainer, layanan, dan penskalaan guna membuat deployment yang mendukung Horizontal Pod Autoscaler (HPA).

    Untuk informasi lebih lanjut tentang langkah-langkah dan parameter, lihat Create a stateless workload (Deployment). Berikut penjelasan parameter utama:

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

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

      Anda dapat menggunakan fitur resource profile untuk menganalisis data historis penggunaan sumber daya dan mendapatkan rekomendasi konfigurasi request dan limit kontainer. Untuk informasi selengkapnya, lihat Resource profiles.

      Penting

      Anda harus menetapkan request sumber daya untuk aplikasi. Jika tidak, penskalaan kontainer otomatis tidak dapat dilakukan.

    • Advanced Configuration:

      • Pada bagian Access Settings, klik Create di sebelah Service untuk mengonfigurasi layanan.

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

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

        • Trigger Condition: Menentukan persentase penggunaan sumber daya. Saat penggunaan sumber daya melebihi nilai ini, aplikasi akan memperluas kapasitas. Untuk informasi selengkapnya tentang algoritma horizontal pod autoscaling, lihat Algorithm details.

        • Maximum Replicas: Jumlah maksimum replika yang dapat diperluas oleh deployment. Nilai ini harus lebih besar dari jumlah replika minimum.

        • Minimum Replicas: Jumlah minimum replika untuk deployment, yang harus berupa bilangan bulat lebih besar 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 aktivitas Horizontal Pod Autoscaler (HPA), seperti penggunaan CPU atau memori serta jumlah replika maksimum atau minimum. Anda juga dapat mengelola HPA, misalnya memperbarui konfigurasinya atau menonaktifkannya.

Buat HPA untuk aplikasi yang sudah ada

Langkah-langkah berikut menggunakan deployment tanpa status sebagai contoh untuk mengaktifkan HPA pada aplikasi yang sudah ada. Prosedur untuk jenis workload lainnya serupa.

Halaman Workload

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

  2. Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, pilih Workloads > Deployments.

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

  4. Pada kotak dialog Create, konfigurasikan pengaturan penskalaan.

    • Name: Menentukan nama kebijakan HPA.

    • Untuk Metric, klik Add.

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

      • Threshold: Persentase penggunaan sumber daya. Kontainer akan memperluas kapasitas saat penggunaan sumber daya melebihi nilai ini. Untuk informasi selengkapnya tentang algoritma horizontal pod autoscaling, lihat Algorithm details.

  • Maximum Replicas: Jumlah maksimum replika yang dapat diperluas oleh deployment. Nilai ini harus lebih besar dari jumlah replika minimum.

  • Minimum Replicas: Jumlah minimum replika untuk deployment, yang harus berupa bilangan bulat lebih besar 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 untuk Horizontal Pod Autoscaler (HPA), seperti penggunaan CPU dan memori, serta jumlah replika minimum dan maksimum. Anda juga dapat mengelola HPA, misalnya memperbarui konfigurasinya atau menonaktifkannya.

Halaman Workload Scaling

Catatan

Halaman ini hanya tersedia bagi 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 kiri, klik Workload Scaling.

  3. Di pojok kanan atas, klik Create Auto Scaling, lalu klik tab HPA and CronHPA. Pilih workload target. Di bagian Configure Scaling Policy, pilih Metric-based Autoscaling HPA, lalu konfigurasikan kebijakan HPA.

    • Policy Name: Nama kebijakan HPA.

    • Minimum Replicas: Jumlah minimum replika untuk workload. Nilainya harus minimal 1.

    • Maximum Replicas: Jumlah maksimum replika yang dapat diperluas oleh workload. 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 sumber daya yang ditentukan. Jika Anda menentukan beberapa jenis sumber daya, HPA akan memicu event penskalaan ketika salah satu metrik mencapai ambang batasnya.

    • Threshold: Persentase penggunaan sumber daya yang memicu kontainer untuk memperluas kapasitas. Untuk informasi selengkapnya tentang algoritma horizontal pod autoscaling, lihat Algorithm details.

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

Verifikasi hasil

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

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

Catatan

Di lingkungan produksi, aplikasi diskalakan berdasarkan muatan 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 mengikatnya ke objek deployment yang ingin Anda skalakan. Kemudian, gunakan perintah kubectl untuk mengonfigurasi penskalaan kontainer otomatis. Disarankan hanya membuat satu HPA untuk setiap workload. Langkah-langkah berikut menggunakan aplikasi Nginx yang mendukung HPA sebagai contoh.

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

    Penting

    Saat menerapkan 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 request dan limit kontainer. Untuk informasi selengkapnya, lihat Resource profiles.

    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> aktual Anda.
            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 diikat oleh HPA. Dalam contoh ini, HPA diikat ke deployment bernama nginx. Event 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 untuk deployment. Nilainya harus berupa bilangan bulat lebih besar atau sama dengan 1.
      maxReplicas: 10  # Jumlah maksimum replika untuk deployment. Nilainya harus lebih besar dari minReplicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # Target rata-rata utilisasi sumber daya. Ini adalah rasio antara rata-rata penggunaan sumber daya terhadap jumlah yang diminta.
                   

    Versi sebelum 1.24

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

    Jika Anda ingin menentukan metrik CPU dan memori sekaligus, Anda dapat menentukan kedua jenis sumber daya cpu dan memory di bidang metrics alih-alih membuat dua HPA. HPA akan melakukan operasi penskalaan ketika mendeteksi bahwa salah satu metrik telah mencapai ambang batas penskalaannya.

    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 perintah kubectl describe hpa <HPA_name>. Dalam contoh ini, nama HPA adalah nginx-hpa. Pesan peringatan berikut diharapkan muncul dalam output. Pesan ini menunjukkan bahwa HPA masih dalam proses deployment. 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 penskalaan adalah penggunaan CPU pod Nginx melebihi 50%. Lalu, jalankan kembali perintah kubectl describe hpa <HPA_name> untuk melihat status skalabilitas horizontal.

    Output berikut 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 turun (scaleDown) dan skala keluar (scaleUp) secara lebih granular. Untuk informasi selengkapnya, lihat Configurable scaling behavior.

Skenario khas yang didukung oleh bidang behavior meliputi, namun tidak terbatas pada, hal-hal berikut:

  • Memperluas kapasitas secara cepat selama lonjakan traffic.

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

  • Menonaktifkan skala masuk untuk aplikasi yang sensitif terhadap status.

  • Dalam skenario dengan keterbatasan sumber daya atau sensitif biaya, Anda dapat menggunakan jendela stabilisasi stabilizationWindowSeconds untuk membatasi kecepatan skala keluar. Hal ini mengurangi penyesuaian berulang yang disebabkan oleh fluktuasi sementara.

Untuk informasi selengkapnya tentang konfigurasi behavior dan contohnya, 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 jadwal, mirip dengan kebijakan Crontab, lihat Use CronHPA for scheduled horizontal pod scaling.

  • Jika penggunaan sumber daya aplikasi Anda berubah secara periodik yang sulit didefinisikan dengan aturan, Anda dapat menggunakan AHPA untuk secara otomatis mengidentifikasi siklus bisnis dari metrik historis dan menskalakan pod sesuai kebutuhan. Untuk informasi selengkapnya, lihat Predictive autoscaling (AHPA).

  • Untuk secara otomatis menetapkan batas sumber daya untuk pod berdasarkan penggunaan sumber dayanya dan memastikan pod memiliki 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 saat sumber daya kluster tidak mencukupi. Untuk informasi selengkapnya, lihat Enable node autoscaling.