全部产品
Search
文档中心

Container Service for Kubernetes:Sesuaikan perilaku penskalaan HPA

更新时间:Jul 02, 2025

Setelah mengaktifkan penskalaan pod horizontal (HPA) untuk kluster Anda, jika perilaku penskalaan default tidak memenuhi kebutuhan, Anda dapat memodifikasi pengaturan behavior untuk menyesuaikan perilaku penciutan (scaleDown) dan pemuaian (scaleUp). Misalnya, Anda dapat dengan cepat memperluas saat terjadi lonjakan lalu lintas bisnis, menangani beban kerja yang berfluktuasi, atau melarang pengecilan untuk aplikasi sensitif terhadap status.

Perhatian

  • Pengaturan behavior mencapai status Stabil pada Kubernetes 1.23. Pastikan HPA diaktifkan untuk kluster Anda yang menjalankan Kubernetes 1.24 atau lebih baru. Untuk informasi lebih lanjut, lihat Implementasikan penskalaan pod horizontal. Untuk panduan memperbarui kluster, lihat Perbarui kluster ACK secara manual.

  • Jika menggunakan kubectl untuk menerapkan controller HPA secara manual, pastikan versi API HPA adalah v2beta2 atau lebih baru.

Cara mengonfigurasi pengaturan behavior

Pengaturan behavior dalam konfigurasi HPA bersifat opsional dan dapat dikonfigurasi untuk menyesuaikan perilaku penskalaan. Bidang scaleDown dan scaleUp dalam pengaturan behavior digunakan untuk mengoptimalkan perilaku penskalaan, mencegah kehabisan atau kekurangan sumber daya, meningkatkan pemanfaatan sumber daya, serta memaksimalkan kinerja aplikasi.

Blok kode berikut merupakan contoh konfigurasi HPA yang mencakup pengaturan behavior. Dalam contoh ini, pengaturan behavior disetel ke nilai default. Anda dapat memodifikasi nilai bidang yang ada sesuai kebutuhan. Jika suatu bidang tidak ditentukan nilainya, maka akan digunakan pengaturan default.

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: sample-hpa
spec:
  minReplicas: 1
  maxReplicas: 100
  metrics:
  - pods:
      metric:
        name: http_requests_per_second
      target:
        averageValue: 50
        type: AverageValue
    type: Pods
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: sample-app
  behavior:  # Pengaturan perilaku default.
    scaleDown: # Modifikasi bidang ini untuk menyesuaikan perilaku penciutan.
      stabilizationWindowSeconds: 300
      policies: 
      - type: Pods
        value: 10 
        periodSeconds: 15
    scaleUp:  # Modifikasi bidang ini untuk menyesuaikan perilaku pemuaian.
      stabilizationWindowSeconds: 0
      policies:
      - type: Percent
        value: 100
        periodSeconds: 15
      - type: Pods
        value: 4
        periodSeconds: 15
      selectPolicy: Max

Dalam file YAML sampel, bidang scaleDown mendefinisikan jendela stabilisasi (stabilizationWindowSeconds) selama 300 detik dan kebijakan penskalaan di bagian policies. Jendela stabilisasi memastikan bahwa controller HPA mempertimbangkan rekomendasi jumlah pod replika yang akan diperkecil dalam 5 menit terakhir, memilih nilai terbesar, dan memperkecil hingga 10 pod replika setiap 15 detik. Ini membantu menghindari fluktuasi jumlah pod.

Bidang scaleUp mendefinisikan jendela stabilisasi sebesar 0 detik, yang berarti controller HPA melakukan operasi pemuaian segera. Dua kebijakan pemuaian didefinisikan: controller HPA memperluas hingga 100% dari jumlah pod replika saat ini setiap 15 detik, atau memperluas hingga empat pod replika setiap 15 detik. Selama pemuaian, controller HPA memilih kebijakan yang menambah lebih banyak pod.

Tabel berikut menjelaskan bidang yang didukung oleh scaleDown dan scaleUp.

Bidang

Deskripsi

stabilizationWindowSeconds

Jendela stabilisasi yang digunakan untuk menghindari fluktuasi jumlah pod replika ketika nilai metrik penskalaan terus berfluktuasi. Controller HPA perlu mempertimbangkan semua rekomendasi tentang jumlah pod replika dalam jendela stabilisasi. Jika Anda mengonfigurasi scaleDown, controller HPA memilih jumlah rekomendasi terbesar. Jika Anda mengonfigurasi scaleUp, controller HPA memilih jumlah rekomendasi terkecil. Satuan: detik.

policies

Definisikan satu atau lebih kebijakan penciutan. Setiap kebijakan terdiri dari type (seperti Percent atau Pods) dan value untuk menggambarkan bagaimana pod dihapus ketika kondisi penciutan terpenuhi. Sebagai contoh, controller HPA menghapus persentase pod tertentu atau jumlah pod tetap.

selectPolicy

Tentukan kebijakan yang digunakan ketika beberapa kebijakan penciutan tersedia. Nilai valid: Min, Max, dan Disabled. Jika Anda mengonfigurasi scaleDown, Max menunjukkan bahwa controller HPA memilih kebijakan penciutan yang menghapus pod replika paling banyak. Jika Anda mengonfigurasi scaleUp, itu menunjukkan bahwa controller HPA memilih kebijakan yang menambah pod replika paling banyak.

Berikut ini menjelaskan cara menyesuaikan pengaturan behavior berdasarkan skenario yang berbeda.

Pemuaian cepat

Selama acara seperti flash sale dan peluncuran produk, gunakan konfigurasi berikut untuk menangani lonjakan beban kerja mendadak:

behavior:
  scaleUp:
    policies:
    - type: Percent
      value: 900
      periodSeconds: 15

Konfigurasi ini membuat controller HPA menambah 900% dari jumlah pod saat ini dalam 15 detik, mencapai ekspansi sepuluh kali lipat sambil tetap mematuhi batasan maxReplicas. Jika jumlah awal pod adalah 1, dan kondisi pemuaian terus terpenuhi, perubahan jumlah pod adalah sebagai berikut:

1 -> 10 -> 100 -> 1000

Pemuaian cepat dan penciutan lambat

Untuk menangani lonjakan lalu lintas tak terduga setelah aktivitas penciutan guna memastikan stabilitas dan respons cepat aplikasi, gunakan konfigurasi berikut untuk memperluas dengan cepat dan memperkecil dengan lambat.

behavior:
  scaleUp:
    policies:
    - type: Percent
      value: 900
      periodSeconds: 60
  scaleDown:
    policies:
    - type: Pods
      value: 1
      periodSeconds: 600 # Hapus satu pod setiap 10 menit.

Selama aktivitas pemuaian, controller HPA menambah 900% dari jumlah pod saat ini dalam 60 detik. Jika nilai metrik terus berada di bawah ambang batas, controller HPA menghapus paling banyak satu pod dalam 600 detik (10 menit) selama aktivitas penciutan.

Larang penciutan

Aktivitas penciutan dapat mengganggu tugas-tugas penting atau aplikasi sensitif terhadap status, menyebabkan migrasi beban kerja. Gunakan konfigurasi berikut untuk melarang penciutan demi memastikan ketersediaan tinggi dan stabilitas aplikasi.

behavior:
  scaleDown:
    selectPolicy: Disabled

Perpanjang atau kurangi jendela waktu penciutan

Dalam skenario dengan sumber daya atau anggaran terbatas, aktivitas pemuaian cepat dapat menghabiskan semua sumber daya atau meningkatkan biaya secara signifikan. Gunakan stabilizationWindowSeconds untuk mengontrol frekuensi pemuaian akibat beban kerja yang berfluktuasi.

behavior:
  scaleDown:
    stabilizationWindowSeconds: 600
    policies:
    - type: Pods
      value: 5
      periodSeconds: 600

Dalam konfigurasi tersebut, meskipun nilai metrik turun di bawah ambang batas penciutan, controller HPA tidak langsung melakukan aktivitas penciutan. Ia menunggu jendela waktu selama 600 detik (10 menit) sebelum memeriksa apakah nilai metrik masih lebih rendah dari ambang batas. Dalam jendela waktu ini, controller HPA menghapus paling banyak lima pod. Untuk memperkecil segera saat kondisi penciutan terpenuhi, atur stabilizationWindowSeconds menjadi 0.

Gunakan beberapa kebijakan pemuaian

Jika pola pertumbuhan lalu lintas bisnis Anda tidak dapat diprediksi, gunakan konfigurasi berikut untuk mendefinisikan beberapa kebijakan pemuaian guna menangani fluktuasi lalu lintas.

  behavior:
    scaleUp:
      policies:
      - type: Pods # Perluas berdasarkan jumlah pod.
        value: 4
        periodSeconds: 60
      - type: Percent  # Perluas berdasarkan persentase tertentu.
        value: 50
        periodSeconds: 60
      selectPolicy: Max

Dalam konfigurasi tersebut, scaleUp mendefinisikan dua kebijakan:

  • Satu kebijakan menambah paling banyak empat pod setiap menit.

  • Kebijakan lainnya menambah paling banyak 50% dari jumlah pod saat ini setiap menit.

selectPolicy disetel ke Max, yang menunjukkan bahwa controller HPA memilih kebijakan yang menambah pod paling banyak.

Referensi

  • Disarankan menggunakan HPA bersama dengan skalabilitas node untuk memastikan semua pod memiliki sumber daya komputasi yang cukup. Untuk informasi lebih lanjut, lihat Ikhtisar skalabilitas node.

  • Jika Anda memiliki pertanyaan saat menggunakan HPA, lihat FAQ penskalaan beban kerja.