En esta sección se describe cómo enviar una o varias métricas de un pod o una carga de trabajo a su balanceador de carga.
Estas métricas proceden del servicio o la aplicación que estés ejecutando. Por ejemplo, consulta las métricas expuestas por vLLM Engine.
El balanceador de carga puede usar estos datos con el balanceo de carga basado en la utilización para equilibrar las cargas de trabajo de forma más eficiente. Por ejemplo, puedes usar esta función para monitorizar las regiones con mayor carga de trabajo y, a continuación, permitir que el balanceador de carga redirija el tráfico a la región con más recursos disponibles. En el ejemplo de vLLM, una métrica que podría ser útil para monitorizar el uso es gpu_cache_usage_perc.
Requisitos
Estos son los requisitos de los pods:
- GKE 1.34.1-gke.1127000 o una versión posterior con clústeres en el canal rápido.
- La API Gateways está habilitada.
- Usar el autoescalado horizontal de pods con el perfil de rendimiento.
Estos son los requisitos de las métricas.
- Se debe poder acceder a las métricas a través de un endpoint HTTP.
- Las métricas deben tener el formato estándar de Prometheus.
Los balanceadores de carga tienen restricciones en los nombres de las métricas. Por ejemplo, el nombre no puede tener más de 64 caracteres. Para ver la lista completa de restricciones, consulta los detalles del campo
backends[].customMetrics[].nameen la referencia de la API deBackendService.Si la métrica de tu servicio no cumple estas restricciones, puedes cambiarle el nombre con el campo
exportName.Solo se admiten métricas de tipo Gauge entre 0 y 1, donde 1 representa una utilización del 100%.
Las etiquetas de métricas se ignoran, por lo que no se pueden usar para distinguir entre métricas. Asegúrate de que tu carga de trabajo no exponga la misma métrica con varias etiquetas.
Se pueden exponer un máximo de 10 métricas por clúster. Otros servicios tienen sus propios límites. Por ejemplo, consulta los límites y requisitos de los balanceadores de carga. Ten en cuenta que un clúster puede usar más de un balanceador de carga.
Balanceo basado en la utilización (UBB) de GKE basado en métricas personalizadas
Puedes usar el balanceo basado en la utilización (UBB) de GKE para que el balanceador de carga distribuya el tráfico en función de la utilización de tus pods de backend. En lugar de usar una métrica genérica como la CPU, puedes configurar UBB para que utilice métricas personalizadas que sean más relevantes para el rendimiento de tu aplicación.
Cuando usas UBB con métricas personalizadas en GKE, se aplican las siguientes limitaciones:
- Solo API Gateway: solo puedes usar UBB con métricas personalizadas con servicios que expongas mediante la API Gateway. GKE usa el controlador de GKE Gateway para interactuar con la API Gateway. Las APIs Service e Ingress no admiten UBB con métricas personalizadas.
- Sin Cloud Service Mesh: no puedes usar UBB con métricas personalizadas con Cloud Service Mesh.
- Balanceadores de carga no admitidos: no puedes usar UBB con métricas personalizadas con balanceadores de carga de red de paso a través externos ni con balanceadores de carga de red de proxy externos.
Exponer métricas para el balanceo de carga
Elige una métrica que quieras exponer. Puede elegir cualquier métrica que exponga su servidor y que cumpla los requisitos indicados en la sección anterior. En este ejemplo se usa una métrica personalizada llamada
queue_depth_util.Añade el siguiente recurso personalizado y sustituye los detalles específicos de tu métrica y tu 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_NAMESustituye los siguientes valores para que coincidan con tu carga de trabajo:
NAME: nombre del objeto AutoscalingMetric.NAMESPACE: el espacio de nombres en el que se encuentran los pods.APP_LABEL_NAME: la etiqueta usada para el pod.METRIC_PORT: número de puerto.METRIC_PATH: la ruta a la métrica. Verifica la ruta que usa tu servicio o aplicación. Esta ruta suele ser/metrics.METRIC: el nombre de la métrica que estás exponiendo.Opcional:
METRIC_NEW_NAME: puede usar este campo para cambiar el nombre de la métrica. Si el nombre de la métrica no cumple las restricciones de nombre definidas por el balanceador de carga, utilice este campo para cambiarle el nombre por uno válido.Para ver la lista completa de restricciones, consulta los detalles del campo
backends[].customMetrics[].nameen la referencia de la API deBackendService.
Aplica el recurso con el siguiente comando:
kubectl apply -f FILE_NAME.yamlSustituye
FILE_NAMEpor el nombre del archivo YAML.Cuando hayas añadido el recurso personalizado, la métrica se enviará a la API de escalado automático. La métrica se lee cada pocos segundos y se envía al balanceador de carga.
Para usar esta señal con fines de balanceo de carga, proporcione un
GCPBackendPolicy. Por ejemplo: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
Ten en cuenta que las métricas que genera Prometheus siguen un estándar de nomenclatura diferente.
Cuando se registran las métricas del balanceo de carga, GKE Metrics Agent añade internamente el prefijo gke.named_metrics. para cumplir el requisito de la API BackendService.
Para exponer una segunda métrica, sigue los mismos pasos para crear otro recurso personalizado.
Ahora que ha expuesto las métricas al balanceador de carga, puede configurarlo para que las use. Para obtener más información, consulta Configurar el balanceador de carga para que use métricas personalizadas.
Para obtener más información sobre cómo trabajar con el balanceador de carga, consulta Configurar el balanceo de carga basado en la utilización para servicios de GKE.
Solucionar problemas de las métricas expuestas al balanceador de carga
Para verificar que las métricas se exponen correctamente al balanceador de carga, puedes hacer lo siguiente:
- Verifica los registros en el agente de métricas de GKE. Si se ha producido un error al intentar exponer las métricas, es posible que los registros hayan indicado que hay un error. Para obtener más información sobre cómo buscar errores, consulta Solucionar problemas de métricas del sistema.
- Puedes usar el balanceador de carga en modo de prueba para ver todas las métricas que recibe. Para obtener más información sobre cómo probar las métricas con la marca
dryRun, consulte Configurar el balanceador de carga para que use métricas personalizadas.
Siguientes pasos
- Para obtener más información sobre el balanceo de carga basado en la utilización, consulta Acerca de los balanceadores de carga basados en la utilización para servicios de GKE.
- Consulta cómo configurar el balanceo de carga basado en la utilización para los servicios de GKE.