All Products
Search
Document Center

Container Service for Kubernetes:Implementasi penskalaan otomatis pod horizontal

Last Updated:Jul 02, 2025

Anda dapat mengaktifkan fitur Penskalaan Otomatis Pod Horizontal (HPA) untuk menyesuaikan jumlah pod secara otomatis berdasarkan penggunaan CPU, memori, atau metrik lainnya. HPA meningkatkan jumlah replika pod saat terjadi lonjakan beban kerja dan menyesuaikannya kembali ketika beban berkurang, tanpa memerlukan intervensi manual. Fitur ini sangat cocok untuk bisnis dengan fluktuasi layanan tinggi, seperti e-commerce, pendidikan online, dan layanan keuangan.

Prasyarat

Buat aplikasi dengan HPA diaktifkan di konsol ACK

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

  2. Di halaman Clusters, temukan kluster yang ingin dikelola, lalu klik nama kluster atau pilih Details di kolom Actions. Halaman detail kluster akan muncul.

  3. Di panel navigasi halaman detail kluster, pilih Workloads > Deployments.

  4. Di halaman Deployments, klik Create from Image.

  5. Di halaman Create, masukkan informasi dasar, konfigurasi kontainer, konfigurasi layanan, dan konfigurasi penskalaan sesuai petunjuk untuk membuat Penyebaran yang mendukung HPA.

    Untuk informasi lebih lanjut tentang langkah-langkah spesifik dan parameter konfigurasi, lihat Membuat Aplikasi Tanpa Status dari Gambar. Berikut adalah penjelasan parameter utama:

    • Basic Information: Tentukan informasi aplikasi, seperti nama dan jumlah replika.

    • Container: Pilih gambar serta sumber daya CPU dan memori yang diperlukan.

      Penting

      Tetapkan sumber daya permintaan yang dibutuhkan oleh aplikasi. Jika tidak, HPA tidak akan berfungsi.

    • Advanced:

      • Di bagian Access Control, klik Create di sebelah kanan Services untuk menetapkan parameter.

      • Di bagian Scaling, pilih Enable untuk HPA dan konfigurasikan kondisi serta parameter terkait.

        • Metrics: Pilih CPU Usage atau Memory Usage, yang harus sesuai dengan nilai yang ditentukan di bidang Required Resources. Jika baik CPU Usage maupun Memory Usage telah ditentukan, HPA akan menjalankan operasi penskalaan ketika salah satu metrik mencapai ambang batas penskalaan.

        • Condition: Tentukan ambang batas penggunaan sumber daya. HPA memicu peristiwa penskalaan ketika ambang batas terlampaui. Untuk informasi lebih lanjut tentang algoritma yang digunakan dalam penskalaan otomatis pod horizontal, lihat Detail Algoritma.

        • Max. Replicas: Tentukan jumlah maksimum pod yang dapat diskalakan oleh Penyebaran. Nilai ini harus lebih besar dari jumlah minimum pod yang direplikasi.

        • Min. Replicas: Tentukan jumlah minimum pod yang harus berjalan untuk Penyebaran. Nilai ini harus bilangan bulat lebih besar dari atau sama dengan 1.

Buat aplikasi yang memiliki HPA diaktifkan menggunakan kubectl

Anda juga dapat membuat HPA menggunakan template orkestrasi dan mengaitkan HPA dengan Penyebaran tempat Anda ingin mengaktifkan HPA. Kemudian, jalankan perintah kubectl untuk mengaktifkan HPA. Kami merekomendasikan agar Anda hanya membuat satu aplikasi dengan HPA diaktifkan untuk setiap beban kerja. Contoh berikut menunjukkan cara mengaktifkan HPA untuk aplikasi NGINX.

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

    Penting

    Konfigurasikan sumber daya request yang dibutuhkan oleh aplikasi. Jika tidak, HPA tidak dapat diaktifkan.

    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> Anda yang sebenarnya.
            ports:
            - containerPort: 80
            resources:
              requests:       # Parameter ini diperlukan untuk perhitungan metrik HPA. Jika tidak, HPA akan menampilkan status tidak diketahui.
                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 dalam file tersebut guna membuat HPA.

    Gunakan parameter scaleTargetRef untuk mengaitkan HPA dengan Penyebaran nginx dan memicu operasi penskalaan ketika rata-rata penggunaan CPU semua kontainer dalam pod mencapai 50%.

    Template YAML untuk kluster dengan versi Kubernetes 1.24 dan yang lebih baru

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # Jumlah minimum kontainer yang harus berjalan untuk Penyebaran. Nilai parameter ini harus bilangan bulat lebih besar dari atau sama dengan 1.
      maxReplicas: 10  # Jumlah maksimum kontainer yang dapat diskalakan oleh Penyebaran. Nilai parameter ini harus lebih besar dari minReplicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # Rata-rata pemanfaatan sumber daya target, yaitu rasio nilai rata-rata penggunaan sumber daya terhadap jumlah permintaannya.
                   

    Template YAML untuk kluster dengan versi Kubernetes lebih lama dari 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 lebih besar dari atau sama dengan 1.
      maxReplicas: 10  # Harus lebih besar dari minReplicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
                   

    Jika Anda perlu menentukan metrik CPU dan memori, Anda dapat menentukan kedua jenis sumber daya cpu dan memory di bawah bidang metrics, alih-alih membuat dua HPA. Jika HPA mendeteksi bahwa salah satu metrik mencapai ambang batas penskalaan, ia 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

    Setelah itu, jalankan perintah kubectl describe hpa <Nama HPA>. Peringatan serupa dengan output berikut akan dikembalikan, menunjukkan bahwa HPA masih dalam proses penyebaran. Nama HPA dalam contoh ini adalah nginx-hpa. 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 HPA dibuat dan pod mencapai kondisi penskalaan, yaitu ketika penggunaan CPU pod NGINX melebihi 50% dalam contoh ini. Lalu, jalankan perintah kubectl describe hpa <Nama HPA> lagi untuk memeriksa status penskalaan horizontal.

    Jika output berikut dikembalikan, HPA sedang berjalan sesuai harapan:

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