Dokumen ini menjelaskan cara mengirim satu atau beberapa metrik dari Pod atau workload ke autoscaler Anda.
Metrik ini berasal dari layanan atau aplikasi yang Anda jalankan. Untuk satu contoh metrik yang diekspos, lihat metrik yang diekspos oleh vLLM Engine.
Kemudian, penskala otomatis workload dapat menggunakan data ini
untuk menskalakan workload secara lebih efisien. Misalnya, Anda dapat menggunakan fitur ini untuk memantau kedalaman antrean atau permintaan aktif, lalu mengizinkan penskala otomatis untuk menambah atau mengurangi jumlah Pod.
Dari contoh vLLM, metrik yang dapat berguna untuk melacak pemanfaatan adalah
vllm:gpu_cache_usage_perc.
Persyaratan
Persyaratan untuk Pod adalah sebagai berikut:
- GKE 1.35.1-gke.1396000 atau yang lebih baru dengan cluster di saluran Cepat.
- Menggunakan penskalaan otomatis Pod horizontal dengan profil performa.
Persyaratan untuk metrik adalah sebagai berikut.
- Metrik harus dapat diakses di endpoint HTTP. Jalur endpoint secara
default adalah
/metrics. - Metrik harus diformat sesuai dengan standar Prometheus.
- Hanya metrik pengukur yang didukung.
- Nama label dalam pemilih label Pod tidak boleh berisi karakter khusus. Hanya huruf a-z (huruf kecil atau huruf besar), angka, tanda hubung, dan garis bawah yang didukung.
- Saat menggunakan pemfilteran berdasarkan label metrik, kunci label harus cocok dengan ekspresi reguler
^[a-zA-Z_][a-zA-Z0-9_]*(diawali dengan huruf atau garis bawah, dan hanya berisi huruf, angka, atau garis bawah). - Maksimal 20 metrik unik dapat diekspos per cluster.
Mengekspos metrik untuk penskalaan otomatis
Pilih metrik yang akan diekspos. Anda dapat memilih metrik apa pun yang diekspos oleh workload Anda, dan yang juga memenuhi persyaratan yang tercantum di bagian sebelumnya.
Jika beban kerja Anda mengekspos beberapa metrik dengan nama yang sama, tetapi label yang berbeda, tambahkan filter label untuk membantu memastikan hanya satu yang dipilih.
Tambahkan resource kustom berikut, dengan mengganti detail yang khusus untuk metrik dan Pod Anda:
apiVersion: autoscaling.gke.io/v1beta1 kind: AutoscalingMetric metadata: name: NAME namespace: NAMESPACE spec: metrics: - pod: selector: matchLabels: APP_LABEL_NAME: APP_LABEL_VALUE containers: - endpoint: port: METRIC_PORT path: METRIC_PATH metrics: - gauge: name: METRIC prometheusMetricName: METRIC_PROMETHEUS_NAMEGanti yang berikut agar sesuai dengan workload Anda:
NAME: nama objek AutoscalingMetric.NAMESPACE: namespace tempat Pod berada.APP_LABEL_NAMEdanAPP_LABEL_VALUE: nama dan nilai label yang cocok dengan Pod yang memancarkan metrik.METRIC_PORT: nomor port.METRIC_PATH: jalur ke metrik. Verifikasi jalur yang digunakan oleh layanan atau aplikasi Anda; jalur ini sering kali/metrics.METRIC: nama metrik yang Anda ekspos. Nama harus cocok dengan regular expression^[a-z]([-a-z0-9]*[a-z0-9])?, dan memiliki panjang tidak lebih dari 63 karakter. Artinya, karakter pertama harus berupa huruf kecil, dan semua karakter berikutnya harus berupa tanda hubung, huruf kecil, atau angka, kecuali karakter terakhir yang tidak boleh berupa tanda hubung.Opsional:
METRIC_PROMETHEUS_NAME: nama metrik Prometheus seperti yang diekspos oleh Pod. Anda dapat menggunakan kolom ini untuk mengganti nama metrik, misalnya karena nama metrik yang diekspos oleh Pod tidak mematuhi batasan nama yang ditetapkan oleh autoscaler.Untuk mengetahui detail tentang batasan nama, lihat batasan untuk penskalaan otomatis Pod horizontal.
Terapkan manifes menggunakan perintah berikut:
kubectl apply -f FILE_NAME_AUTOSCALING_METRIC.yamlGanti
FILE_NAME_AUTOSCALING_METRICdengan nama file YAML.Setelah menambahkan resource kustom, metrik akan dikirim ke API penskalaan otomatis. Metrik dibaca setiap beberapa detik dan dikirim ke penskalaan otomatis workload.
Setelah mengekspos metrik ke autoscaler, Anda dapat mengonfigurasi autoscaler beban kerja untuk menggunakan metrik ini. Untuk melakukannya, tambahkan resource kustom berikut:
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: NAME_HPA namespace: NAMESPACE spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: DEPLOYMENT minReplicas: MIN_REPLICAS maxReplicas: MAX_REPLICAS metrics: - type: Pods pods: metric: name: autoscaling.gke.io|NAME|METRIC target: type: AverageValue averageValue: AVERAGE_VALUEGanti yang berikut agar sesuai dengan workload Anda:
NAME_HPA: nama objekHorizontalPodAutoscaler.NAMESPACE: namespace tempat Pod berada.DEPLOYMENT: nama deployment yang Anda targetkan.MIN_REPLICAS: jumlah minimum replika yang dapat diskalakan oleh Deployment.MAX_REPLICAS: jumlah maksimum replika yang dapat diskalakan oleh Deployment.NAME: nama objek AutoscalingMetric.METRIC: nama metrik yang Anda ekspos.AVERAGE_VALUE: nilai rata-rata target untuk metrik. Autoscaler menyesuaikan jumlah replika untuk mempertahankan nilai metrik rata-rata di semua Pod.
Terapkan manifes menggunakan perintah berikut:
kubectl apply -f FILE_NAME_HPA.yamlGanti
FILE_NAME_HPAdengan nama file YAML.
Memfilter metrik menggunakan label metrik
Memfilter metrik menggunakan label metrik tersedia di GKE 1.36.0-gke.1759000 atau yang lebih baru.
Metrik sering kali menyertakan label. Label adalah pasangan nilai kunci yang memungkinkan Anda menambahkan dimensi ke nilai. Misalnya, metrik yang menghitung jumlah permintaan ke endpoint HTTP yang dikelompokkan menurut metode dan lingkungan dapat menggunakan label untuk menentukan konteks ini. Contoh ini dapat terlihat seperti berikut:
http_requests_total{method="GET", env="prod"} 11111
http_requests_total{method="PUT", env="staging"} 22222
Anda dapat menggunakan filter label untuk membantu memastikan bahwa spesifikasi metrik Anda sama persis dengan satu metrik. Misalnya, untuk memilih hanya metrik pertama dalam contoh sebelumnya, gunakan spesifikasi berikut untuk metrik AutoscalingMetric gauge:
apiVersion: autoscaling.gke.io/v1beta1
kind: AutoscalingMetric
metadata:
name: filter-sample
spec:
# Several lines are omitted here.
metrics:
- gauge:
name: http_requests_total
filter:
matchLabels:
method: GET
env: prod
Kunci pasangan nilai kunci matchLabels harus cocok dengan ekspresi reguler
^[a-zA-Z_][a-zA-Z0-9_]*: yaitu, diawali dengan huruf atau garis bawah, dan
hanya berisi huruf, angka, atau garis bawah.
Memecahkan masalah metrik yang diekspos untuk penskalaan otomatis
Anda dapat meninjau status resource kustom AutoscalingMetric untuk mencari error konfigurasi. Untuk melakukannya:
Periksa resource kustom AutoscalingMetric dengan menjalankan perintah berikut:
kubectl describe autoscalingmetric NAME -n NAMESPACELihat kolom
Statusuntuk mengetahui informasi tentang metrik yang dikonfigurasi, seperti peringatan tentang error konfigurasi, dan nama persis metrik sebagaimana yang akan muncul dalam objekHorizontalPodAutoscaler.
Langkah berikutnya
- Untuk mengetahui detail selengkapnya tentang penskalaan otomatis workload berdasarkan metrik, lihat Tentang penskalaan otomatis workload berdasarkan metrik.
- Pelajari cara Mengonfigurasi penskalaan otomatis Pod horizontal.
- Untuk mengetahui detail selengkapnya tentang pemecahan masalah penskalaan otomatis horizontal, lihat Memecahkan masalah penskalaan otomatis Pod horizontal.