全部产品
Search
文档中心

Container Service for Kubernetes:Menggunakan HPA di Knative

更新时间:Jun 26, 2025

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

Langkah 1: Menerapkan Layanan Knative

  1. Masuk ke Konsol ACK atau . Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih Applications > Knative.

  3. 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'
  4. Jalankan perintah berikut untuk memeriksa apakah Layanan Knative berjalan sesuai harapan:

    kubectl get ksvc

    Output 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      True        

    Jika True ditampilkan di kolom READY, Layanan Knative berjalan sesuai harapan.

Langkah 2: Kirim permintaan untuk menguji penskalaan otomatis berdasarkan penggunaan CPU

  1. Instal alat pengujian beban hey.

    Untuk informasi lebih lanjut tentang hey, lihat Hey.

  2. Jalankan perintah berikut untuk melakukan pengujian beban dengan mengirim 100 permintaan per detik (QPS) selama 60 detik:

    Catatan

    Ganti 121.XX.XX.10 dengan 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 --watch

    Output 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          1s

    Output 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.

image.png

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.