Alibaba Cloud Knative dapat berintegrasi dengan Horizontal Pod Autoscaler (HPA) untuk mengaktifkan penskalaan otomatis berdasarkan beban sumber daya. Meskipun Knative mendukung penskalaan otomatis berdasarkan jumlah permintaan, integrasi dengan HPA memungkinkan penskalaan yang lebih halus menggunakan metrik tambahan seperti penggunaan CPU dan memori.
Prasyarat
Knative telah diterapkan di kluster. Untuk informasi lebih lanjut, lihat Menerapkan Knative di kluster ACK atau .
Klien kubectl terhubung ke kluster ACK. Untuk informasi lebih lanjut, lihat Memperoleh file kubeconfig dari kluster dan menggunakan kubectl untuk terhubung ke kluster.
Untuk melihat data pemantauan Knative pada dasbor Knative, pastikan bahwa Knative terhubung ke Managed Service for Prometheus. Untuk informasi lebih lanjut, lihat Melihat dasbor pemantauan Knative.
Langkah 1: Menerapkan Layanan Knative
Masuk ke Konsol ACK atau . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Pada tab Services dari halaman Knative, pilih default dari daftar drop-down Namespace, klik Create from Template, salin konten YAML berikut ke editor kode, lalu klik Create.
Kode contoh berikut membuat Layanan Knative bernama
helloworld-go-hpa:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go-hpa # Tentukan nama Layanan Knative. spec: template: metadata: labels: app: helloworld-go-hpa annotations: autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev" # Tentukan HPA sebagai scaler. autoscaling.knative.dev/metric: "cpu" # Metrik yang didukung oleh HPA mencakup utilisasi CPU dan utilisasi memori. Dalam contoh ini, HPA dikonfigurasi untuk bekerja berdasarkan utilisasi CPU. autoscaling.knative.dev/target: "30" # Tentukan ambang batas utilisasi CPU. HPA secara otomatis menskalakan pod untuk Layanan Knative ketika ambang batas terlampaui. autoscaling.knative.dev/minScale: "1" # Tentukan jumlah minimum pod yang harus dijamin. autoscaling.knative.dev/maxScale: "4" # Tentukan jumlah maksimum pod yang diizinkan. spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/autoscale-go:v1024 resources: requests: cpu: '200m'Jalankan perintah berikut untuk memeriksa apakah Layanan Knative berjalan sesuai harapan:
kubectl get ksvcOutput yang diharapkan:
NAME URL LATESTCREATED LATESTREADY READY REASON helloworld-go-hpa http://helloworld-go-hpa.default.example.com helloworld-go-hpa-00001 helloworld-go-hpa-00001 TrueJika
Trueditampilkan di kolomREADY, Layanan Knative berjalan sesuai harapan.
Langkah 2: Kirim permintaan untuk menguji penskalaan otomatis berdasarkan penggunaan CPU
Instal alat pengujian beban hey.
Untuk informasi lebih lanjut tentang hey, lihat Hey.
Jalankan perintah berikut untuk melakukan pengujian beban dengan mengirim 100 permintaan per detik (QPS) selama 60 detik:
CatatanGanti
121.XX.XX.10dengan alamat IP atau nama domain gateway.hey -z 60s -q 100 -host "helloworld-go-hpa.default.example.com" "http://121.XX.XX.10?prime=40000000" # 121.199.XXX.XXX adalah alamat IP atau nama domain gateway.Selama pengujian beban, Anda dapat menjalankan perintah berikut untuk memeriksa apakah pod diskalakan secara real-time:
kubectl get pods --watchOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE # Pod berjalan sesuai harapan dan container dalam kondisi siap. helloworld-go-hpa-00001-deployment-67cc8f979b-fxfl5 2/2 Running 0 101m # Jumlah pod diskalakan menjadi empat. Kolom READY menampilkan 0/2 untuk setiap pod dan kolom STATUS menampilkan Pending untuk setiap pod. Ini berarti pod sedang menunggu dan sumber daya belum dialokasikan ke pod. helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 0/2 Pending 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 0/2 Pending 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 0/2 Pending 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 0/2 Pending 0 0s # Kolom READY menampilkan 0/2 untuk setiap pod dan kolom STATUS menampilkan ContainerCreating untuk setiap pod. Ini berarti container dalam pod sedang dibuat. helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 0/2 ContainerCreating 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 0/2 ContainerCreating 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 0/2 ContainerCreating 0 0s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 0/2 ContainerCreating 0 0s # Kolom READY menampilkan 1/2 untuk dua pod dan 2/2 untuk dua pod, dan kolom STATUS menampilkan Running untuk setiap pod. Ini berarti setidaknya satu container telah dibuat dan berjalan sesuai harapan untuk setiap pod. helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 1/2 Running 0 1s helloworld-go-hpa-00001-deployment-67cc8f979b-kv6rj 2/2 Running 0 1s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 1/2 Running 0 1s helloworld-go-hpa-00001-deployment-67cc8f979b-fxq85 2/2 Running 0 1sOutput menunjukkan bahwa HPA dapat secara otomatis menskalakan pod untuk Layanan Knative. Ketika beban meningkat, HPA menskalakan jumlah pod dari satu menjadi empat untuk meningkatkan kemampuan pemrosesan dan throughput Layanan Knative.
(Opsional) Langkah 3: Melihat dasbor Knative
Knative menyediakan fitur observabilitas out-of-the-box untuk Layanan Knative. Anda dapat melihat dasbor Knative pada tab Monitoring Dashboards dari halaman Knative. Untuk informasi lebih lanjut tentang dasbor Knative, lihat Melihat dasbor pemantauan Knative.

Referensi
Alibaba Cloud Knative mengimplementasikan kerangka serverless berbasis Kubernetes dengan mengintegrasikan pembuatan container (atau fungsi), manajemen beban kerja (penskalaan otomatis), dan model event. Untuk informasi lebih lanjut tentang Alibaba Cloud Knative, lihat Knative.
Untuk informasi lebih lanjut tentang fitur-fitur Alibaba Cloud Knative, lihat Perbandingan antara Alibaba Cloud Knative dan Knative open-source.