All Products
Search
Document Center

Container Service for Kubernetes:Buat CronHPA kompatibel dengan HPA

Last Updated:Jun 17, 2026

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, dan desiredReplicas HPA sebelum melakukan tindakan.

  • CronHPA menyesuaikan minReplicas atau maxReplicas HPA berdasarkan targetSize yang dijadwalkan.

  • HPA melakukan penskalaan pod melalui Deployment dan Set Replikanya.

CronHPA tidak pernah mengubah jumlah pod secara langsung, sehingga konflik dapat dihindari.

Diagram showing CronHPA targeting HPA, which in turn targets the Deployment

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/maxReplicas HPA.

  • Target CronHPA: Nilai targetSize pada 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.

Langkah selanjutnya