Jika pemanfaatan sumber daya aplikasi Anda menunjukkan perubahan periodik dan Anda perlu menskalakan pod berdasarkan jadwal mirip Crontab, Anda dapat menggunakan Penjadwal Horizontal Pod Autoscaler (CronHPA) untuk mencapai penskalaan terjadwal. CronHPA cocok untuk skenario di mana lalu lintas bisnis memiliki periode puncak yang signifikan atau tugas terjadwal.
Tips pra-bacaan
Kluster ACK menyediakan berbagai solusi penskalaan beban kerja (elastisitas lapisan penjadwalan) dan penskalaan node (elastisitas lapisan sumber daya). Kami menyarankan Anda membaca Penyesuaian Skala Otomatis sebelum menggunakan topik ini untuk memahami skenario yang berlaku dan batasan berbagai solusi tersebut.
Templat dan parameter CronHPA
CronHPA diimplementasikan berdasarkan kubernetes-cronhpa-controller. Kubernetes-cronhpa-controller adalah pengontrol penskalaan horizontal pod berbasis waktu yang menggunakan sintaks mirip Crontab untuk mengonfigurasi kebijakan penskalaan terjadwal, sehingga memungkinkan penyesuaian sumber daya dinamis dalam skenario dengan pola lalu lintas siklikal. CronHPA dapat diterapkan pada objek Kubernetes apa pun yang mendukung subresource penskalaan (Scale Subresource), seperti Deployment dan StatefulSet.
Langkah 1: Instal komponen CronHPA
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Klik tab Manage Applications, temukan ack-kubernetes-cronhpa-controller, lalu ikuti petunjuk di halaman untuk menyelesaikan instalasi komponen.
Langkah 2: Buat tugas CronHPA
Sebelum membuat tugas CronHPA untuk suatu aplikasi, pastikan komponen CronHPA di kluster berjalan normal dan hanya ada satu objek tugas HPA untuk aplikasi tersebut. Contoh berikut menunjukkan cara mengaktifkan tugas CronHPA untuk aplikasi tanpa status. Langkah-langkah untuk jenis beban kerja lainnya serupa.
Buat tugas CronHPA saat membuat aplikasi
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, pilih .
Pada halaman Deployments, klik Create From Image.
Pada halaman Create, ikuti petunjuk di halaman untuk menyelesaikan konfigurasi informasi dasar aplikasi, konfigurasi kontainer, konfigurasi layanan, dan konfigurasi penskalaan terjadwal guna membuat Deployment yang mendukung CronHPA.
Untuk informasi lebih lanjut tentang langkah dan parameter, lihat Buat aplikasi tanpa status menggunakan Deployment. Daftar berikut menjelaskan parameter utama.
Basic Information: Konfigurasikan informasi dasar aplikasi, seperti nama dan jumlah replika.
Container: Konfigurasikan citra, CPU, dan sumber daya memori yang dibutuhkan oleh kontainer.
Advanced:
Pada bagian Access Control, klik Service yang sesuai dengan Create untuk mengonfigurasi layanan.
Pada bagian Scaling, centang CronHPA untuk Enable, ikuti petunjuk di halaman untuk menginstal komponen (abaikan jika sudah diinstal), lalu konfigurasikan kondisi dan parameter untuk penskalaan terjadwal.
Job Name: Nama tugas CronHPA.
Desired Number Of Replicas: Saat waktu terjadwal tiba, jumlah replika aplikasi secara otomatis diskalakan ke nilai ini.
Scaling Schedule: Tetapkan periode penjadwalan. Untuk informasi lebih lanjut, lihat Kubernetes CronHPA Controller.
Buat tugas CronHPA untuk aplikasi yang sudah ada
Buat di halaman Workloads
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, pilih .
Klik beban kerja target, lalu klik tab Pod Scaling. Pada bagian CronHPA, klik Create untuk mengonfigurasi CronHPA.

Parameter
Deskripsi
Job Name
Nama tugas CronHPA.
Desired Number Of Replicas
Saat waktu terjadwal tiba, jumlah replika aplikasi secara otomatis diskalakan ke nilai ini.
Scaling Schedule
Periode penjadwalan yang ditetapkan. Untuk informasi lebih lanjut tentang menetapkan periode penjadwalan untuk tugas CronHPA, lihat AliyunContainerService/kubernetes-cronhpa-controller.
Buat di halaman Workload Scaling
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sisi kiri, klik Workload Scaling.
Di pojok kanan atas halaman, klik Create Auto Scaling.
Klik tab HPA And CronHPA, lalu Select The Target Workload. Pada bagian Configure Scaling Policy, centang CronHPA.
Anda dapat menambahkan beberapa tugas CronHPA. Ikuti petunjuk di halaman untuk mengonfigurasi informasi kebijakan CronHPA, lalu klik OK.
CronHPA Name: Masukkan nama CronHPA.
Job Name: Masukkan nama tugas CronHPA.
Desired Number Of Replicas: Tetapkan jumlah replika target saat waktu terjadwal tiba.
Scaling Schedule: Tetapkan periode penjadwalan. Untuk informasi lebih lanjut, lihat Kubernetes CronHPA Controller.
Gunakan kubectl
Buat dan salin konten berikut ke file cronhpa.yaml.
apiVersion: autoscaling.alibabacloud.com/v1beta1 kind: CronHorizontalPodAutoscaler metadata: name: cronhpa-sample namespace: default spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx-deployment-basic excludeDates: - "* * * 15 11 *" - "* * * * * 5" jobs: - name: "scale-down" schedule: "30 */1 * * * *" targetSize: 1 runOnce: false - name: "scale-up" schedule: "0 */1 * * * *" targetSize: 3 runOnce: trueJalankan perintah berikut untuk membuat tugas CronHPA untuk beban kerja yang sudah ada.
kubectl apply -f cronhpa.yamlHasil yang diharapkan:
cronhorizontalpodautoscaler.autoscaling.alibabacloud.com/cronhpa-sample created
Operasi terkait
Lihat, tambahkan, atau ubah tugas CronHPA
Setelah membuat tugas CronHPA, Anda dapat melihat status dan daftar tugas CronHPA di daftar CronHPA. Anda dapat menambahkan tugas CronHPA atau mengubah konfigurasi CronHPA yang sudah ada melalui titik masuk berikut.
Titik masuk Workload Scaling
Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sisi kiri, klik Workload Scaling.
Klik tab CronHPA, lalu klik Edit di kolom Actions dari tugas CronHPA target.
Titik masuk Workloads (menggunakan aplikasi tanpa status sebagai contoh; langkah untuk jenis beban kerja lainnya serupa)
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, pilih .
Pada halaman Deployments, klik Details di kolom Actions dari Deployment target. Lalu klik tab Pod Scaling. Di bagian CronHPA, klik Add Or Edit Job di kolom Actions.
Implementasikan koordinasi antara CronHPA dan HPA
Penjadwal Horizontal Pod Autoscaler (CronHPA) dan Horizontal Pod Autoscaler (HPA) tidak saling mengetahui keberadaan masing-masing. Jika kedua CronHPA dan HPA dikonfigurasi untuk aplikasi Anda, CronHPA dan HPA akan menskalakan aplikasi Anda secara terpisah. Dalam kasus ini, aktivitas penskalaan yang lebih baru akan menimpa yang sebelumnya. Untuk mengatasi masalah ini, Container Service for Kubernetes (ACK) menyediakan solusi agar CronHPA dapat berinteraksi dengan HPA tanpa konflik. Jika ACK mendeteksi bahwa CronHPA dan HPA keduanya diterapkan, ACK akan menetapkan HPA sebagai objek penskalaan CronHPA. CronHPA memicu HPA untuk menskalakan objek yang diskalakan oleh HPA, seperti Deployment, pada waktu terjadwal.
Untuk informasi lebih lanjut, lihat Implementasikan Koordinasi Antara CronHPA dan HPA.