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
behaviormencapai 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
v2beta2atau 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: MaxDalam 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 |
| 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 |
| Definisikan satu atau lebih kebijakan penciutan. Setiap kebijakan terdiri dari |
| Tentukan kebijakan yang digunakan ketika beberapa kebijakan penciutan tersedia. Nilai valid: |
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: 15Konfigurasi 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 -> 1000Pemuaian 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: DisabledPerpanjang 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: 600Dalam 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: MaxDalam 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.