Dokumen ini menjelaskan cara mengirim satu atau beberapa metrik dari Pod atau workload ke load balancer Anda.
Metrik ini berasal dari layanan atau aplikasi yang Anda jalankan. Misalnya, lihat metrik yang diekspos oleh vLLM Engine.
Load balancer kemudian dapat menggunakan data ini dengan
load balancing berbasis pemanfaatan
untuk menyeimbangkan workload dengan lebih efisien. Misalnya, Anda dapat menggunakan fitur ini untuk memantau region dengan penggunaan workload yang lebih berat, lalu mengizinkan load balancer mengalihkan traffic ke region dengan resource yang lebih tersedia. 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.
- Gateway API diaktifkan.
- Menggunakan penskalangan otomatis Pod horizontal dengan profil performa.
Persyaratan untuk metrik adalah sebagai berikut.
- Metrik harus dapat diakses di endpoint HTTP di bawah Pod yang di-load balance oleh Gateway Anda. Jalur endpoint default adalah
/metrics. - Metrik harus diformat sesuai dengan standar Prometheus.
Load balancer memiliki batasan pada nama metrik. Misalnya, nama tidak boleh melebihi 64 karakter. Untuk daftar lengkap batasan, lihat detail tentang kolom
backends[].customMetrics[].namedalam referensi API untukBackendService.Jika metrik layanan Anda tidak mematuhi batasan ini, Anda dapat mengganti namanya menggunakan kolom
exportName.Hanya metrik pengukur antara 0 dan 1 yang didukung, dengan 1 mewakili pemanfaatan 100%.
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.
Maksimum 20 metrik unik dapat diekspos per cluster. Layanan lain memiliki batasnya sendiri. Misalnya, lihat batas dan persyaratan untuk load balancer. Perhatikan bahwa cluster dapat menggunakan lebih dari satu load balancer.
Load Balancing Berbasis Pemanfaatan (UBB) GKE berdasarkan metrik kustom
Anda dapat menggunakan Load Balancing Berbasis Pemanfaatan (UBB) GKE untuk mengizinkan load balancer mendistribusikan traffic berdasarkan pemanfaatan Pod backend Anda. Daripada mengandalkan metrik umum seperti CPU, Anda dapat mengonfigurasi UBB untuk menggunakan metrik kustom yang lebih relevan dengan performa aplikasi Anda.
Saat Anda menggunakan UBB dengan metrik kustom di GKE, batasan berikut berlaku:
- Hanya Gateway API: Anda hanya dapat menggunakan UBB dengan metrik kustom dengan Layanan yang Anda ekspos menggunakan Gateway API. GKE menggunakan GKE Gateway Controller untuk berinteraksi dengan Gateway API. Service dan Ingress API tidak mendukung UBB dengan metrik kustom. Metrik kustom harus berasal dari Pod yang merupakan anggota Layanan.
- Tidak ada Cloud Service Mesh: Anda tidak dapat menggunakan UBB dengan metrik kustom dengan Cloud Service Mesh.
- Load balancer yang tidak didukung: Anda tidak dapat menggunakan UBB dengan metrik kustom dengan Load Balancer Jaringan Passthrough Eksternal dan Load Balancer Jaringan proxy Eksternal.
Mengekspos metrik untuk load balancing
Pilih metrik yang akan diekspos. Anda dapat memilih metrik apa pun yang diekspos server Anda, dan yang juga memenuhi persyaratan yang tercantum di bagian sebelumnya. Contoh ini menggunakan metrik kustom bernama
queue_depth_util.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_NAME loadBalancing: enabled: trueGanti hal 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 berupa/metrics.METRIC: nama metrik yang Anda ekspos. Nama harus cocok dengan ekspresi reguler^[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, garis bawah, huruf kecil, atau angka, kecuali karakter terakhir, yang harus berupa huruf atau angka.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 load balancer.Untuk daftar lengkap batasan, lihat detail tentang kolom
backends[].customMetrics[].namedalam referensi API untukBackendService.
Terapkan manifes menggunakan perintah berikut:
kubectl apply -f FILE_NAME.yamlGanti
FILE_NAMEdengan nama file YAML.Setelah Anda menambahkan resource kustom, metrik akan dikirim ke autoscaling API. Metrik dibaca setiap beberapa detik dan dikirim ke load balancer.
Untuk menggunakan sinyal ini untuk tujuan load balancing, berikan
GCPBackendPolicy. Contoh:kind: GCPBackendPolicy apiVersion: networking.gke.io/v1 metadata: name: my-backend-policy spec: targetRef: group: "" kind: Service name: store-v1 default: balancingMode: CUSTOM_METRICS customMetrics: - name: gke.named_metrics.queue_depth_util dryRun: false
Perhatikan bahwa metrik yang dilaporkan oleh Prometheus mengikuti standar penamaan yang berbeda.
Saat metrik dilaporkan untuk load balancing, GKE Metrics Agent akan menambahkannya secara internal dengan awalan gke.named_metrics. untuk mengikuti persyaratan BackendService API.
Untuk mengekspos metrik kedua, ikuti langkah-langkah yang sama untuk membuat resource kustom lainnya.
Setelah mengekspos metrik ke load balancer, Anda dapat mengonfigurasi load balancer untuk menggunakan metrik ini. Untuk mengetahui detailnya, lihat Mengonfigurasi load balancer untuk menggunakan metrik kustom.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan load balancer, lihat Mengonfigurasi load balancing berbasis pemanfaatan untuk Layanan GKE.
Memecahkan masalah metrik yang diekspos ke load balancer
Untuk memverifikasi bahwa metrik diekspos ke load balancer dengan benar, Anda dapat melakukan hal berikut:
- Verifikasi log di GKE Metrics Agent. Jika terjadi error saat mencoba mengekspos metrik, log mungkin telah menandakan bahwa ada error. Untuk mengetahui informasi selengkapnya tentang cara mencari error, lihat Memecahkan masalah metrik sistem.
- Anda dapat menggunakan load balancer dalam mode uji coba untuk melihat semua metrik yang diterimanya. Untuk mempelajari lebih lanjut cara menguji metrik
menggunakan tanda
dryRun, lihat Mengonfigurasi load balancer untuk menggunakan metrik kustom.
Langkah berikutnya
- Untuk mengetahui detail selengkapnya tentang load balancing berbasis pemanfaatan, lihat Tentang load balancer berbasis pemanfaatan untuk Layanan GKE.
- Pelajari cara Mengonfigurasi load balancing berbasis pemanfaatan untuk Layanan GKE.