Esta secção descreve como enviar uma ou mais métricas de um pod ou uma carga de trabalho para o equilibrador de carga.
Estas métricas são provenientes do serviço ou da aplicação que está a executar. Por exemplo, veja as métricas expostas pelo motor vLLM.
Em seguida, o balanceador de carga pode usar estes dados com o balanceamento de carga baseado na utilização para equilibrar as cargas de trabalho de forma mais eficiente. Por exemplo, pode usar esta funcionalidade para
monitorizar as regiões com uma utilização de carga de trabalho mais elevada e, em seguida, permitir que o
equilibrador de carga redirecione o tráfego para a região com os recursos
mais disponíveis. No exemplo do vLLM, uma métrica que pode ser útil para acompanhar a utilização é gpu_cache_usage_perc.
Requisitos
Seguem-se os requisitos para os pods.
- GKE 1.34.1-gke.1127000 ou posterior com clusters no canal rápido.
- A API Gateways está ativada.
- Usar a escala automática horizontal de pods com o perfil de desempenho.
Seguem-se os requisitos para as métricas.
- As métricas têm de estar acessíveis num ponto final de HTTP.
- O formato das métricas tem de estar na norma Prometheus.
Os balanceadores de carga têm restrições nos nomes das métricas. Por exemplo, o nome não pode exceder 64 carateres. Para ver a lista completa de restrições, consulte os detalhes sobre o campo
backends[].customMetrics[].namena referência da API paraBackendService.Se a métrica do seu serviço não estiver em conformidade com estas restrições, pode mudar-lhe o nome através do campo
exportName.Apenas são suportadas métricas de indicador entre 0 e 1, sendo que 1 representa a utilização de 100%.
As etiquetas de métricas são ignoradas, pelo que não podem ser usadas para distinguir entre métricas. Certifique-se de que a sua carga de trabalho não expõe a mesma métrica com várias etiquetas.
É possível expor um máximo de 10 métricas por cluster. Outros serviços têm os seus próprios limites. Por exemplo, consulte os limites e os requisitos para equilibradores de carga. Tenha em atenção que um cluster pode usar mais do que um balanceador de carga.
Equilíbrio com base na utilização (UBB) do GKE com base em métricas personalizadas
Pode usar o equilíbrio de carga baseado na utilização (UBB) do GKE para permitir que o equilibrador de carga distribua o tráfego com base na utilização dos seus pods de back-end. Em vez de depender de uma métrica genérica, como a CPU, pode configurar o UBB para usar métricas personalizadas mais relevantes para o desempenho da sua aplicação.
Quando usa a UBB com métricas personalizadas no GKE, aplicam-se as seguintes limitações:
- Apenas API Gateway: só pode usar UBB com métricas personalizadas com serviços que expõe através da API Gateway. O GKE usa o controlador do GKE Gateway para interagir com a API Gateway. As APIs Service e Ingress não suportam UBB com métricas personalizadas.
- Sem Cloud Service Mesh: não pode usar UBB com métricas personalizadas com o Cloud Service Mesh.
- Balanceadores de carga não suportados: não pode usar a UBB com métricas personalizadas com balanceadores de carga de rede de encaminhamento externo e balanceador de carga de rede de proxy externo.
Exponha métricas para o balanceamento de carga
Escolha uma métrica para expor. Pode escolher qualquer métrica que o seu servidor exponha e que também cumpra os requisitos indicados na secção anterior. Este exemplo usa uma métrica personalizada denominada
queue_depth_util.Adicione o seguinte recurso personalizado, substituindo os detalhes específicos da sua métrica e 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_NAMESubstitua o seguinte para corresponder à sua carga de trabalho:
NAME: o nome do objeto AutoscalingMetric.NAMESPACE: o espaço de nomes em que os agrupamentos estão.APP_LABEL_NAME: a etiqueta usada para o agrupamento.METRIC_PORT: o número da porta.METRIC_PATH: o caminho para a métrica. Valide o caminho usado pelo seu serviço ou aplicação. Este caminho é frequentemente/metrics.METRIC: o nome da métrica que está a expor.Opcional:
METRIC_NEW_NAME: pode usar este campo para mudar o nome da métrica. Se o nome da métrica não estiver em conformidade com as restrições de nomes definidas pelo equilibrador de carga, use este campo para mudar o nome para um nome válido.Para ver a lista completa de restrições, consulte os detalhes sobre o campo
backends[].customMetrics[].namena referência da API paraBackendService.
Aplique o recurso através do seguinte comando:
kubectl apply -f FILE_NAME.yamlSubstitua
FILE_NAMEpelo nome do ficheiro YAML.Quando adiciona o recurso personalizado, a métrica é enviada para a API de ajuste automático de escala. A métrica é lida a cada poucos segundos e enviada para o equilibrador de carga.
Para usar este sinal para fins de equilíbrio de carga, forneça um
GCPBackendPolicy. Por exemplo: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
Tenha em atenção que as métricas comunicadas pelo Prometheus seguem uma norma de nomenclatura diferente.
Quando as métricas são comunicadas para o balanceamento de carga, o agente de métricas do GKE anexa-as internamente com o prefixo gke.named_metrics. para cumprir o requisito da API BackendService.
Para expor uma segunda métrica, siga os mesmos passos para criar outro recurso personalizado.
Agora que expôs as métricas ao equilibrador de carga, pode configurar o equilibrador de carga para usar estas métricas. Para ver detalhes, consulte o artigo Configure o balanceador de carga para usar métricas personalizadas.
Para mais informações sobre como trabalhar com o balanceador de carga, consulte o artigo Configure o balanceamento de carga baseado na utilização para serviços do GKE.
Resolva problemas com métricas expostas ao equilibrador de carga
Para verificar se as métricas são expostas corretamente ao equilibrador de carga, pode fazer o seguinte:
- Valide os registos no agente de métricas do GKE. Se ocorreu um erro ao tentar expor as métricas, os registos podem ter sinalizado que existe um erro. Para mais informações sobre como procurar erros, consulte o artigo Resolução de problemas de métricas do sistema.
- Pode usar o balanceador de carga no modo de teste para analisar todas as métricas que recebe. Para saber como testar as métricas com a flag
dryRun, consulte o artigo Configure o equilibrador de carga para usar métricas personalizadas.
O que se segue?
- Para mais detalhes sobre o balanceamento de carga baseado na utilização, consulte o artigo Acerca dos balanceadores de carga baseados na utilização para serviços do GKE.
- Saiba como configurar o equilíbrio de carga baseado na utilização para serviços GKE.