Dalam beberapa skenario, Anda mungkin perlu menaikkan atau menurunkan skala aplikasi berdasarkan metrik kustom seperti permintaan per detik (QPS) dari permintaan HTTP atau panjang antrian pesan. Horizontal Pod Autoscaler (AHPA) menyediakan mekanisme External Metrics yang bekerja sama dengan komponen alibaba-cloud-metrics-adapter untuk memungkinkan penskalaan aplikasi berdasarkan metrik kustom.
Prasyarat
Langkah 1: Persiapan
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan cluster yang ingin dikelola dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Deployments, klik Create from YAML. Salin konten YAML berikut untuk membuat Penyebaran bernama sample-app, Layanan, dan Penyebaran bernama fib-loader-qps untuk uji stres, lalu klik Create.
CatatanMetrik kustom
requests_per_secondyang menunjukkan jumlah permintaan per detik terpapar.Di halaman Create, salin konten YAML berikut untuk membuat ServiceMonitor dan klik Create:
Aktifkan ServiceMonitor.
Masuk ke Konsol ARMS.
Di panel navigasi sebelah kiri, pilih .
Di bilah navigasi atas, pilih wilayah tempat instance Prometheus diterapkan dan klik nama instance tersebut, yang sesuai dengan nama cluster ACK Anda.
Di panel navigasi sebelah kiri, klik Service Discovery. Klik tab Configure di sebelah kanan, lalu klik tab ServiceMonitor.
Nyalakan sakelar di kolom Operation untuk sample-app.

Langkah 2: Pasang ack-alibaba-cloud-metrics-adapter
Peroleh titik akhir API HTTP internal dari instance Prometheus.
Masuk ke Konsol ARMS.
Di panel navigasi sebelah kiri, pilih .
Di bilah navigasi atas halaman Instances, pilih wilayah tempat instance Prometheus diterapkan dan klik nama instance tersebut. Instance Prometheus dinamai dalam format arms_metrics_{RegionId}_XXX.
Di panel navigasi sebelah kiri, klik Settings. Di bagian HTTP API URL (Grafana Read URL), catat titik akhir di sebelah kanan Internal Network.
Opsional. Jika token akses diaktifkan, konfigurasikan token akses untuk kluster Anda dan catat token tersebut.
Catat titik akhir API HTTP di sebelah kanan Internal Network.

Pasang ack-alibaba-cloud-metrics-adapter.
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, pilih .
Di tab Katalog Aplikasi, temukan dan klik ack-alibaba-cloud-metrics-adapter. Lalu, klik Deploy di pojok kanan atas halaman.
Di halaman wizard Basic Information, tentukan Cluster dan Namespace, lalu klik Next.
Di halaman wizard Parameters, tentukan Chart Version. Konfigurasikan
prometheus.urldanprometheus.prometheusHeaderdi bagian Parameters berdasarkan titik akhir API HTTP internal yang telah dicatat, lalu klik OK.prometheus: enabled: true # Masukkan titik akhir API HTTP internal, 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 akses diaktifkan untuk Managed Service for Prometheus, Anda perlu mengonfigurasi prometheusHeader Authorization. prometheusHeader: - Authorization: eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjIwMDc1MTY0MDksImlzcyI6Imh0dHA6******liYWJhY2xvdWQuY29tIiwiaWF0IjoxNjkyMTU2NDA5LCJqdGkiOiI3NmRkOWJkOS0zYzBkLTRjY2MtOTFkYy1lZTU1OGFkNjg3NmMifQ.gltEJ7g4j-QPao2durNk3OiEBYhv2F_nzG-cncVfFtY
Konfigurasikan metrik kustom.
Di halaman Clusters, temukan cluster yang diinginkan dan klik namanya. Di panel navigasi sebelah kiri, pilih .
Klik Perbarui di kolom Actions untuk alibaba-cloud-metrics-adapter.
Salin konten YAML berikut untuk menimpa kode di editor. Ganti
requests_per_seconddalam contoh kode berikut dengan metrik aktual yang digunakan di Managed Service for Prometheus, lalu klik OK....... prometheus: adapter: rules: custom: - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) name: as: requests_per_second resources: overrides: namespace: resource: namespace seriesQuery: requests_per_second # Tentukan nama metrik yang digunakan di Managed Service for Prometheus. default: false enabled: true # Atur nilai menjadi true untuk mengaktifkan ack-alibaba-cloud-metrics-adapter. ......Jalankan perintah berikut untuk menanyakan informasi terperinci tentang metrik:
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: Pasang AHPA
Buat sumber daya AHPA berikut.
Konfigurasikan
external.metricuntuk menentukan nama metrik danmatchLabels. Nama metrik harus sesuai dengan metrik yang ditentukan di Konfigurasikan metrik kustom. Dalam contoh ini, metrikrequests_per_seconddigunakan.Tetapkan ambang batas. Dalam contoh ini,
AverageValuediatur ke10. Aplikasi akan diskalakan ketika jumlah permintaan per detik melebihi 10.
Jalankan perintah berikut untuk menanyakan hasil penskalaan:
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 7h53mSatuan m atau k digunakan ketika Kubernetes memerlukan presisi lebih tinggi. Misalnya, 1001m sama dengan 1,001 dan 60000m sama dengan 60 dalam contoh ini. Output menunjukkan bahwa jumlah permintaan per detik adalah 60, yang melebihi ambang batas 10. Jumlah pod yang diharapkan (
DESIREDPODS) adalah 6.