Konfigurasikan CronHPA untuk menyesuaikan minReplicas dan maxReplicas HPA, bukan melakukan penskalaan langsung pada Deployment.
Jika Anda menerapkan HPA dan CronHPA melalui Konsol ACK, ACK akan mengonfigurasikannya secara otomatis. Lewati topik ini.
Cara kerja
Secara default, baik CronHPA maupun HPA mengarahkan scaleTargetRef mereka ke Deployment yang sama. Komponen yang bertindak terakhir akan menimpa pengaturan komponen lainnya.
Solusinya: atur scaleTargetRef CronHPA agar mengarah ke resource HPA, bukan ke Deployment. Dengan konfigurasi ini:
-
CronHPA membaca nilai
minReplicas,maxReplicas, dandesiredReplicasHPA sebelum melakukan tindakan. -
CronHPA menyesuaikan
minReplicasataumaxReplicasHPA berdasarkantargetSizeyang dijadwalkan. -
HPA melakukan penskalaan pod melalui Deployment dan Set Replikanya.
CronHPA tidak pernah mengubah jumlah pod secara langsung, sehingga konflik dapat dihindari.
Konfigurasikan CronHPA agar menargetkan HPA
Pada pengaturan umum, CronHPA dan HPA sama-sama mengarah ke Deployment yang sama:
Contoh templat CronHPA (sebelum modifikasi)
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: cronhpa-sample
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment-basic
jobs:
- name: "scale-down"
schedule: "30 */1 * * * *"
targetSize: 1
- name: "scale-up"
schedule: "0 */1 * * * *"
targetSize: 11
Contoh templat HPA
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-sample
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment-basic
minReplicas: 4
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
Untuk mengatasi konflik tersebut, ubah scaleTargetRef dalam manifes CronHPA agar mengarah ke resource HPA:
| Field | Sebelum | Sesudah |
|---|---|---|
apiVersion |
apps/v1 |
autoscaling/v2 |
kind |
Deployment |
HorizontalPodAutoscaler |
name |
nginx-deployment-basic |
hpa-sample |
Contoh: CronHPA dikonfigurasi untuk menskalakan traffic jam kerja
Asumsikan hpa-sample mengelola traffic dari pukul 09.00 hingga 17.00 (UTC+8). Konfigurasikan CronHPA untuk melakukan scale out pada pukul 09.00 dan scale in pada pukul 17.00:
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: cronhpa-sample
spec:
scaleTargetRef:
apiVersion: autoscaling/v2
# Atur tipe resource ke HPA.
kind: HorizontalPodAutoscaler
# Tentukan nama resource HPA.
name: hpa-sample
jobs:
- name: "scale-up-9am"
schedule: "0 0 9 * * * "
targetSize: 20
runOnce: false
- name: "scale-down-5pm"
schedule: "0 0 17 * * *"
targetSize: 3
runOnce: false
Aturan kompatibilitas
Ketika CronHPA menargetkan HPA, CronHPA berperan sebagai batas bawah dinamis untuk jumlah replika: menaikkan minReplicas untuk scale out dan menurunkan minReplicas untuk scale in, tanpa mengatur jumlah pod secara langsung. HPA melakukan penskalaan dalam rentang tersebut berdasarkan metrik.
Tabel berikut menunjukkan cara CronHPA dan HPA berinteraksi dalam setiap kondisi penskalaan.
Header tabel:
-
HPA (min/maks):
minReplicas/maxReplicasHPA. -
Target CronHPA: Nilai
targetSizepada pekerjaan CronHPA. -
Replika saat ini: Jumlah pod yang sedang berjalan.
-
Replika akhir: Jumlah pod setelah penskalaan.
| HPA (min/maks) | Target CronHPA | Replika saat ini | Replika akhir | Perilaku |
|---|---|---|---|---|
| 1/10 | 5 | 5 | 5 | Target sama dengan jumlah saat ini. minReplicas dan maxReplicas tidak berubah. Tidak ada penskalaan. |
| 1/10 | 4 | 5 | 5 | Target lebih kecil dari jumlah saat ini. Tidak ada penskalaan. |
| 1/10 | 6 | 5 | 6 | Target melebihi jumlah saat ini. CronHPA mengatur minReplicas menjadi 6. HPA menskalakan ke 6. HPA baru (min/maks): 6/10. |
| 5/10 | 4 | 5 | 5 | Target lebih kecil dari jumlah saat ini. Tidak ada penskalaan. CronHPA mengatur minReplicas menjadi 4. HPA baru (min/maks): 4/10. |
| 5/10 | 11 | 5 | 11 | Target melebihi maxReplicas. CronHPA mengatur minReplicas dan maxReplicas menjadi 11. HPA menskalakan ke 11. HPA baru (min/maks): 11/11. |