Dalam beberapa skenario, Anda mungkin perlu melakukan penskalaan aplikasi berdasarkan metrik kustom seperti QPS permintaan HTTP atau panjang antrian pesan. Autoscaling Horizontal Pod Autoscaler (AHPA) menyediakan mekanisme External Metrics yang bekerja sama dengan komponen alibaba-cloud-metrics-adapter untuk memungkinkan penskalaan aplikasi berdasarkan metrik kustom. Topik ini menjelaskan cara menggunakan AHPA untuk mengonfigurasi metrik kustom.
Prasyarat
Sebuah ACK managed cluster atau ACK Serverless cluster telah dibuat. Untuk informasi lebih lanjut, lihat Buat ACK Managed Cluster dan Buat ACK Serverless Cluster.
Langkah 1: Persiapkan
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 di pojok kanan atas.
Di halaman Create, salin konten YAML berikut untuk membuat Deployment bernama sample-app, sebuah Service, dan Deployment bernama fib-loader-qps untuk uji stres, lalu klik Create.
CatatanMetrik kustom requests_per_second yang menunjukkan jumlah permintaan per detik dikumpulkan.
Di halaman Create, salin konten YAML berikut untuk membuat ServiceMonitor dan klik Create:
Aktifkan ServiceMonitor.
Masuk ke Konsol Application Real-Time Monitoring Service (ARMS). Di panel navigasi sebelah kiri, pilih .
Di pojok kiri atas halaman Prometheus Service, pilih wilayah tempat instans Prometheus diterapkan dan klik nama instans 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 saklar di kolom Operation untuk sample-app.

Langkah 2: Terapkan ack-alibaba-cloud-metrics-adapter
Peroleh titik akhir API HTTP internal dari instans Prometheus.
Masuk ke Konsol ARMS. Di panel navigasi sebelah kiri, pilih .
Di pojok kiri atas halaman Managed Service for Prometheus, pilih wilayah tempat instans Prometheus diterapkan dan klik nama instans tersebut. Instans 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 cluster Anda dan catat token tersebut.
Catat titik akhir API HTTP di sebelah kanan Internal Network.

Terapkan 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.
Di pojok kanan atas halaman ack-alibaba-cloud-metrics-adapter, klik Deploy.
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 rinci 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: Terapkan AHPA
Buat sumber daya AHPA berikut.
Konfigurasikan
external.metricuntuk menentukan nama metrik dan matchLabels. Nama metrik harus sesuai dengan yang ditentukan dalam Konfigurasikan metrik kustom. Dalam contoh ini, metrik requests_per_second ditentukan.Tetapkan ambang batas. Dalam contoh ini, AverageValue diatur ke 10. 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 membutuhkan presisi yang lebih tinggi. Sebagai contoh, 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.