Expor métricas personalizadas para balanceadores de carga

Esta seção descreve como enviar uma ou mais métricas de um pod ou carga de trabalho para o balanceador de carga.

Essas métricas vêm do serviço ou aplicativo que você está executando. Por exemplo, consulte as métricas expostas pelo vLLM Engine.

O balanceador de carga pode usar esses dados com o balanceamento de carga com base na utilização para equilibrar as cargas de trabalho com mais eficiência. Por exemplo, use esse recurso para monitorar as regiões com maior uso de carga de trabalho e permitir que o balanceador de carga redirecione o tráfego para a região com mais recursos disponíveis. No exemplo do vLLM, uma métrica útil para acompanhar a utilização é gpu_cache_usage_perc.

Requisitos

Os requisitos para os pods são os seguintes:

Os requisitos para as métricas são os seguintes:

  • As métricas precisam estar acessíveis em um endpoint HTTP.
  • O formato das métricas precisa estar no padrão do Prometheus.
  • Os balanceadores de carga têm restrições nos nomes das métricas. Por exemplo, o nome não pode ter mais de 64 caracteres. Para conferir a lista completa de restrições, consulte os detalhes sobre o campo backends[].customMetrics[].name na referência da API para BackendService.

    Se a métrica do seu serviço não obedecer a essas restrições, renomeie-a usando o campo exportName.

  • Somente métricas de medição entre 0 e 1 são aceitas, sendo que 1 representa uma utilização de 100%.

  • Os rótulos de métrica são ignorados e não podem ser usados para distinguir entre métricas. Verifique se a carga de trabalho não expõe a mesma métrica com vários rótulos.

  • É possível expor no máximo 10 métricas por cluster. Outros serviços têm limites próprios. Por exemplo, consulte os limites e requisitos para balanceadores de carga. Um cluster pode usar mais de um balanceador de carga.

Expor métricas para balanceamento de carga

  1. Escolha uma métrica para expor. Você pode escolher qualquer métrica exposta pelo servidor e que atenda aos requisitos listados na seção anterior.

  2. Adicione o seguinte recurso personalizado, substituindo os detalhes específicos da sua métrica e do 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
    

    Substitua o seguinte para corresponder à sua carga de trabalho:

    • NAME: o nome do objeto "AutoscalingMetric".
    • NAMESPACE: o namespace em que os pods estão.
    • APP_LABEL_NAME: o rótulo usado para o pod.
    • METRIC_PORT: o número da porta.
    • METRIC_PATH: o caminho para a métrica. Verifique o caminho usado pelo serviço ou aplicativo. Geralmente, esse caminho é /metrics.
    • METRIC: o nome da métrica que você está expondo.
    • Opcional: METRIC_NEW_NAME: use este campo para renomear a métrica. Se o nome da métrica não estiver em conformidade com as restrições definidas pelo balanceador de carga, use este campo para renomeá-la com um nome válido.

      Para conferir a lista completa de restrições, consulte os detalhes sobre o campo backends[].customMetrics[].name na referência da API para BackendService.

  3. Aplique o recurso usando o seguinte comando:

    kubectl apply -f FILE_NAME.yaml
    

    Substitua FILE_NAME pelo nome do arquivo YAML.

    Depois de adicionar o recurso personalizado, a métrica é enviada à API de escalonamento automático. A métrica é lida a cada poucos segundos e enviada ao balanceador de carga.

Para expor uma segunda métrica, siga as mesmas etapas para criar outro recurso personalizado.

Agora que você expôs as métricas ao balanceador de carga, é possível configurá-lo para usar essas métricas. Para mais detalhes, consulte Configurar o balanceador de carga para usar métricas personalizadas.

Para mais informações sobre como trabalhar com o balanceador de carga, consulte Configurar o balanceamento de carga com base na utilização para serviços do GKE.

Resolver problemas de métricas expostas ao balanceador de carga

Para verificar se as métricas estão sendo expostas corretamente ao balanceador de carga, faça o seguinte:

A seguir