Mengekspos metrik kustom untuk load balancer

Bagian 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 beban kerja secara lebih efisien. Misalnya, Anda dapat menggunakan fitur ini untuk memantau region dengan penggunaan workload yang lebih berat, lalu mengizinkan load balancer untuk mengalihkan traffic ke region dengan sumber daya yang lebih tersedia. Dari contoh vLLM, metrik yang dapat berguna untuk melacak pemanfaatan adalah gpu_cache_usage_perc.

Persyaratan

Persyaratan untuk Pod adalah sebagai berikut.

Persyaratan untuk metrik adalah sebagai berikut.

  • Metrik harus dapat diakses di endpoint HTTP.
  • Format metrik harus dalam standar Prometheus.
  • Load balancer memiliki batasan pada nama metrik. Misalnya, nama tidak boleh melebihi 64 karakter. Untuk mengetahui daftar lengkap batasan, lihat detail tentang kolom backends[].customMetrics[].name dalam referensi API untuk BackendService.

    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 yang merepresentasikan pemanfaatan 100%.

  • Label metrik diabaikan, sehingga tidak dapat digunakan untuk membedakan metrik. Pastikan workload Anda tidak mengekspos metrik yang sama dengan beberapa label.

  • Maksimum 10 metrik 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 Penggunaan (UBB) GKE berdasarkan metrik kustom

Anda dapat menggunakan Penyeimbangan Berbasis Penggunaan (UBB) GKE untuk memungkinkan load balancer mendistribusikan traffic berdasarkan penggunaan 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:

  • Khusus 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.
  • Tanpa 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

  1. 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.

  2. 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:
      selector:
        matchLabels:
          name: APP_LABEL_NAME
      endpoints:
      - port: METRIC_PORT
        path: METRIC_PATH
        metrics:
        - name: METRIC
          exportName: METRIC_NEW_NAME
    

    Ganti yang berikut agar sesuai dengan workload Anda:

    • NAME: nama objek AutoscalingMetric.
    • NAMESPACE: namespace tempat Pod berada.
    • APP_LABEL_NAME: label yang digunakan untuk Pod.
    • 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.
    • Opsional: METRIC_NEW_NAME: Anda dapat menggunakan kolom ini untuk mengganti nama metrik. Jika nama metrik tidak mematuhi batasan nama yang ditetapkan oleh load balancer, gunakan kolom ini untuk mengganti namanya menjadi nama yang valid.

      Untuk mengetahui daftar lengkap batasan, lihat detail tentang kolom backends[].customMetrics[].name dalam referensi API untuk BackendService.

  3. Terapkan resource menggunakan perintah berikut:

    kubectl apply -f FILE_NAME.yaml
    

    Ganti FILE_NAME dengan nama file YAML.

    Setelah Anda menambahkan resource kustom, metrik akan dikirim ke API penskalaan otomatis. Metrik dibaca setiap beberapa detik dan dikirim ke load balancer.

  4. 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, Agen Metrik GKE 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 Agen Metrik GKE. Jika terjadi error saat mencoba mengekspos metrik, log mungkin telah menandakan bahwa ada error. Untuk mengetahui informasi selengkapnya tentang cara mencari error, lihat artikel 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 flag dryRun, lihat Mengonfigurasi load balancer untuk menggunakan metrik kustom.

Langkah berikutnya