Dalam banyak skenario, Anda perlu menskalakan aplikasi berdasarkan metrik kustom, seperti jumlah permintaan per detik (QPS) dari permintaan HTTP atau panjang antrian pesan. AHPA (AdvancedHorizontalPodAutoscaler) menyediakan mekanisme metrik eksternal. Ketika dikombinasikan dengan komponen ack-alibaba-cloud-metrics-adapter, AHPA menawarkan solusi penskalaan yang lebih fleksibel untuk aplikasi Anda.
Prasyarat
Langkah 1: Siapkan aplikasi contoh
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Pada halaman Deployments, klik Create from YAML. Gunakan YAML berikut untuk membuat aplikasi contoh bernama sample-app, Service-nya yang sesuai, serta aplikasi uji stres bernama fib-loader-qps. Lalu, klik Create.
CatatanKontainer ini mengekspos metrik kustom
requests_per_second, yang menunjukkan jumlah permintaan per detik.Pada halaman Create, gunakan YAML berikut untuk membuat ServiceMonitor, lalu klik Create.
Aktifkan ServiceMonitor.
-
Masuk ke Konsol ARMS.
Di panel navigasi kiri, klik Integration Management.
Pada tab Integrated Environments, lihat daftar lingkungan di tab Container Service. Temukan instans ACK dan klik Metric Scraping pada kolom Actions.
Temukan sample-app dalam daftar ServiceMonitor, klik Enable pada kolom Actions, lalu klik OK pada kotak dialog yang muncul.

-
Langkah 2: Sebarkan adapter metrik
Dapatkan titik akhir API HTTP internal dari instans Prometheus.
-
Masuk ke Konsol ARMS.
-
Di panel navigasi kiri, pilih .
Di bagian atas halaman Prometheus Instances, pilih wilayah tempat instans Prometheus berada, lalu klik nama instans target. Nama instans mengikuti format arms_metrics_{RegionId}_XXX.
Di bilah navigasi kiri, klik Settings, lalu di bagian HTTP API Address (Grafana Read Address), lihat dan catat alamat Internal network (URL Prometheus).
(Opsional) Jika otentikasi berbasis token diaktifkan, catat token akses.
Catat titik akhir Internal Network (URL Prometheus).

-
Sebarkan ack-alibaba-cloud-metrics-adapter.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik .
Klik tab App Catalog, cari dan klik ack-alibaba-cloud-metrics-adapter. Di pojok kanan atas halaman, klik Deploy.
Pada halaman Basic Information, pilih Cluster dan Namespace, lalu klik Next.
Pada wizard Parameter Configuration, pilih Chart Version. Berdasarkan nilai yang Anda peroleh pada langkah di Dapatkan titik akhir API HTTP internal dari instans Prometheus, konfigurasikan
prometheus.urldanprometheus.prometheusHeaderdi area Parameters, lalu klik OK.prometheus: enabled: true # Masukkan alamat jaringan internal API HTTP, yaitu URL Managed Service for Prometheus. url: http://cn-beijing-intranet.arms.aliyuncs.com:9090/api/v1/prometheus/6b4b40986a3bec4f92ea418534****/115964845466****/arms-metrics-6fae216078e4****/cn-beijing # Jika token otentikasi diaktifkan untuk Managed Service for Prometheus, konfigurasikan prometheusHeader Authorization. prometheusHeader: - Authorization: eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjIwMDc1MTY0MDksImlzcyI6Imh0dHA6******liYWJhY2xvdWQuY29tIiwiaWF0IjoxNjkyMTU2NDA5LCJqdGkiOiI3NmRkOWJkOS0zYzBkLTRjY2MtOTFkYy1lZTU1OGFkNjg3NmMifQ.gltEJ7g4j-QPao2durNk3OiEBYhv2F_nzG-cncVfFtY
Konfigurasikan metrik kustom.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Temukan alibaba-cloud-metrics-adapter dan klik Update pada kolom Actions.
Salin konten YAML berikut dan tempelkan untuk menimpa parameter yang sesuai dalam templat. Perhatikan bahwa parameter
requests_per_secondharus diubah menjadi metrik Prometheus aktual untuk jumlah permintaan per detik. Lalu, klik Update....... prometheus: adapter: rules: custom: - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) name: as: requests_per_second resources: overrides: namespace: resource: namespace seriesQuery: requests_per_second # Tetapkan nama metrik. Pastikan nama metrik di Managed Service for Prometheus sama dengan yang ditentukan di sini. default: false enabled: true # Tetapkan parameter ini ke true untuk mengaktifkan Prometheus Adapter. ......Jalankan perintah berikut untuk mengkueri detail metrik yang tersedia dari API External Metrics.
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/requests_per_second" {"kind":"ExternalMetricValueList","apiVersion":"external.metrics.k8s.io/v1beta1","metadata":{},"items":[{"metricName":"requests_per_second","metricLabels":{},"timestamp":"2023-08-15T07:59:09Z","value":"10"}]}
Langkah 3: Sebarkan AHPA
Buat resource AHPA.
Tetapkan
external.metricdan tentukan nama metrik sertamatchLabels. Nama metrik harus sama dengan yang ditentukan di Konfigurasikan metrik kustom. Dalam contoh ini, metrik kustom diatur kerequests_per_second.Tetapkan ambang batas target. Misalnya, atur
AverageValueke10. Artinya, aktivitas skala keluar dipicu ketika jumlah permintaan per detik melebihi 10.
Jalankan perintah berikut untuk memeriksa hasil AHPA.
custom-metric % kubectl get ahpa NAME STRATEGY REFERENCE METRIC TARGETS DESIREDPODS REPLICAS MINPODS MAXPODS AGE customer-deployment observer Deployment/sample-app requests_per_second 60000m/10 6 1 1 50 7h53mKubernetes menggunakan satuan seperti m (milli) saat presisi tinggi diperlukan. Misalnya, 1001m sama dengan 1,001. Dalam contoh ini, 60000m sama dengan 60. Output menunjukkan bahwa jumlah permintaan per detik adalah 60, yang melebihi ambang batas target sebesar 10. Jumlah Pod yang diinginkan (
DESIREDPODS) yang dihitung adalah 6.