Esporre metriche personalizzate per i bilanciatori del carico

Questa sezione descrive come inviare una o più metriche da un pod o un workload al bilanciatore del carico.

Queste metriche provengono dal servizio o dall'applicazione che stai eseguendo. Ad esempio, consulta le metriche esposte dal motore vLLM.

Il bilanciatore del carico può quindi utilizzare questi dati con il bilanciamento del carico basato sull'utilizzo per bilanciare i workload in modo più efficiente. Ad esempio, puoi utilizzare questa funzionalità per monitorare le regioni con un utilizzo più intenso del workload e quindi consentire al bilanciatore del carico di reindirizzare il traffico verso la regione con più risorse disponibili. Dall'esempio vLLM, una metrica che potrebbe essere utile per monitorare l'utilizzo è gpu_cache_usage_perc.

Requisiti

I requisiti per i pod sono i seguenti.

I requisiti per le metriche sono i seguenti.

  • Le metriche devono essere accessibili su un endpoint HTTP.
  • Il formato delle metriche deve essere conforme allo standard Prometheus.
  • I bilanciatori del carico hanno limitazioni sui nomi delle metriche. Ad esempio, il nome non può superare i 64 caratteri. Per l'elenco completo delle limitazioni, consulta i dettagli sul campo backends[].customMetrics[].name nei riferimenti per l'API BackendService.

    Se la metrica del tuo servizio non rispetta queste limitazioni, puoi rinominarla utilizzando il campo exportName.

  • Sono supportate solo le metriche del misuratore comprese tra 0 e 1, dove 1 rappresenta l'utilizzo del 100%.

  • Le etichette delle metriche vengono ignorate, pertanto non possono essere utilizzate per distinguere le metriche. Assicurati che il tuo workload non esponga la stessa metrica con più etichette.

  • È possibile esporre un massimo di 10 metriche per cluster. Altri servizi hanno i propri limiti. Ad esempio, consulta i limiti e i requisiti per i bilanciatori del carico. Tieni presente che un cluster può utilizzare più di un bilanciatore del carico.

Bilanciamento basato sull'utilizzo (UBB) di GKE basato su metriche personalizzate

Puoi utilizzare il bilanciamento basato sull'utilizzo (UBB) di GKE per consentire al bilanciatore del carico di distribuire il traffico in base all'utilizzo dei pod di backend. Anziché fare affidamento su una metrica generica come la CPU, puoi configurare UBB in modo che utilizzi metriche personalizzate più pertinenti per il rendimento della tua applicazione.

Quando utilizzi UBB con metriche personalizzate in GKE, si applicano le seguenti limitazioni:

  • Solo API Gateway:puoi utilizzare UBB con metriche personalizzate solo con i servizi che esponi utilizzando l'API Gateway. GKE utilizza il controller GKE Gateway per interagire con l'API Gateway. Le API Service e Ingress non supportano UBB con metriche personalizzate.
  • Nessun Cloud Service Mesh:non puoi utilizzare UBB con metriche personalizzate con Cloud Service Mesh.
  • Bilanciatori del carico non supportati:non puoi utilizzare UBB con metriche personalizzate con bilanciatori del carico di rete passthrough esterni e bilanciatori del carico di rete proxy esterni.

Esporre le metriche per il bilanciamento del carico

  1. Scegli una metrica da esporre. Puoi scegliere qualsiasi metrica esposta dal server e che soddisfi anche i requisiti elencati nella sezione precedente. Questo esempio utilizza una metrica personalizzata denominata queue_depth_util.

  2. Aggiungi la seguente risorsa personalizzata, sostituendo i dettagli specifici della metrica e del pod.

    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
    

    Sostituisci quanto segue in base al tuo workload:

    • NAME: il nome dell'oggetto AutoscalingMetric.
    • NAMESPACE: lo spazio dei nomi in cui si trovano i pod.
    • APP_LABEL_NAME: l'etichetta utilizzata per il pod.
    • METRIC_PORT: il numero di porta.
    • METRIC_PATH: il percorso della metrica. Verifica il percorso utilizzato dal tuo servizio o dalla tua applicazione; questo percorso è spesso /metrics.
    • METRIC: il nome della metrica che stai esponendo.
    • (Facoltativo) METRIC_NEW_NAME: puoi utilizzare questo campo per rinominare la metrica. Se il nome della metrica non è conforme alle limitazioni del nome impostate dal bilanciatore del carico, utilizza questo campo per rinominarlo con un nome valido.

      Per l'elenco completo delle limitazioni, consulta i dettagli sul campo backends[].customMetrics[].name nei riferimenti per l'API BackendService.

  3. Applica la risorsa utilizzando il seguente comando:

    kubectl apply -f FILE_NAME.yaml
    

    Sostituisci FILE_NAME con il nome del file YAML.

    Dopo aver aggiunto la risorsa personalizzata, la metrica viene inviata all'API di scalabilità automatica. La metrica viene letta ogni pochi secondi e inviata al bilanciatore del carico.

  4. Per utilizzare questo segnale ai fini del bilanciamento del carico, fornisci un GCPBackendPolicy. Ad esempio:

    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
    

Tieni presente che le metriche riportate da Prometheus seguono uno standard di denominazione diverso. Quando le metriche vengono segnalate per il bilanciamento del carico, l'agente GKE Metrics le aggiunge internamente il prefisso gke.named_metrics. per rispettare il requisito dell'API BackendService.

Per esporre una seconda metrica, segui gli stessi passaggi per creare un'altra risorsa personalizzata.

Ora che hai esposto le metriche al bilanciatore del carico, puoi configurarlo in modo che le utilizzi. Per maggiori dettagli, vedi Configurare il bilanciatore del carico in modo che utilizzi metriche personalizzate.

Per saperne di più su come utilizzare il bilanciatore del carico, consulta Configurare il bilanciamento del carico basato sull'utilizzo per i servizi GKE.

Risolvi i problemi relativi alle metriche esposte al bilanciatore del carico

Per verificare che le metriche siano esposte correttamente al bilanciatore del carico, puoi procedere nel seguente modo:

Passaggi successivi