Acerca de los balanceadores de cargas basados en la utilización para los servicios de GKE


En esta página, se presenta el balanceo de cargas basado en la utilización para los servicios de Google Kubernetes Engine (GKE), que evalúa la utilización de recursos de tus Pods de backend y usa la capacidad real de la carga de trabajo para volver a balancear el tráfico de forma inteligente y aumentar la disponibilidad de la aplicación y el enrutamiento flexible.

Esta página está dirigida a los arquitectos de nube y especialistas en redes que administran servicios en GKE y desean optimizar la distribución del tráfico en función de la utilización de recursos en tiempo real.

Antes de leer esta página, asegúrate de estar familiarizado con lo siguiente:

Descripción general

La infraestructura de Cloud Load Balancing enruta el tráfico a los servicios de GKE según las métricas de accesibilidad estándar, incluidas HTTP, HTTPS, HTTP/2 y gRPC, que determinan el estado y la elegibilidad de los Pods. De forma predeterminada, reenvía el tráfico a todos los Pods de backend en buen estado teniendo en cuenta la disponibilidad de los Pods y las políticas de distribución de tráfico definidas de forma opcional, como GCPTrafficDistributionPolicy.

Las aplicaciones modernas hacen un seguimiento del uso de la CPU para que puedas comprender los costos, supervisar el rendimiento y administrar la capacidad de manera eficaz. Para satisfacer esta necesidad, los balanceadores de cargas usan los datos de utilización de recursos en tiempo real como una métrica, lo que les permite determinar el volumen de tráfico óptimo que cada Pod de backend puede procesar para una distribución inteligente del tráfico.

El balanceo de cargas basado en la utilización para los Services de GKE evalúa la utilización de recursos como una métrica para determinar la capacidad de los Pods de backend de procesar el tráfico de la aplicación. Luego, vuelve a balancear el tráfico hacia otros backends si se sobreutiliza uno o más Pods.

Características y beneficios

El balanceo de cargas basado en la utilización proporciona los siguientes beneficios:

  • Aumenta la disponibilidad de la aplicación: Prioriza el tráfico a los Pods con menor uso de recursos cuando los backends están bajo presión, lo que ayuda a mantener el rendimiento de la aplicación, evita las ralentizaciones y las interrupciones, y ayuda a garantizar una experiencia confiable para los usuarios.

  • Ofrece un enrutamiento flexible: Proporciona un conjunto adicional de métricas que te permiten definir políticas de distribución del tráfico que se alinean con precisión con tus casos de uso comerciales.

Cómo funciona el balanceo de cargas basado en la utilización

El balanceo de cargas basado en la utilización para los servicios de GKE mejora la forma en que se administra el tráfico de tus aplicaciones que se ejecutan en GKE, ya que hace que el proceso responda mejor a la carga de recursos. Tu aplicación se ejecuta en GKE con muchas instancias (Pods) en diferentes máquinas. Recibe tráfico de dos formas principales:

  • Desde fuera del clúster (tráfico norte-sur): Tu clúster recibe tráfico de Internet o de otras fuentes externas, lo que se conoce como tráfico norte-sur. Un balanceador de cargas (puerta de enlace) administrado por GKE dirige este tráfico desde fuera de tu clúster.

  • Desde el interior de tu clúster (tráfico este-oeste): Tu clúster recibe flujos de tráfico entre diferentes partes de tu aplicación, desde otros servicios dentro de tu clúster de GKE o en varios clústeres. Este flujo de tráfico interno se conoce como tráfico este-oeste.

El balanceo de cargas basado en la utilización para los servicios de GKE implica un proceso continuo en el que los agentes de GKE recopilan métricas de utilización de los Pods que permiten que la infraestructura de Cloud Load Balancing distribuya el tráfico de forma inteligente. En los siguientes pasos, se resume cómo el balanceo de cargas basado en la utilización para los Services de GKE administra el tráfico de tu aplicación según el uso de recursos en tiempo real:

  1. Cuando configuras tu Service de GKE con un balanceador de cargas de aplicaciones (puerta de enlace), GKE crea automáticamente NEG para cada zona y asigna los Pods de tu aplicación a estos NEG. Inicialmente, la distribución del tráfico se basa en verificaciones de estado básicas y en tu configuración predeterminada.

  2. Configuras tu servicio de GKE para que use la utilización de recursos, como la CPU, como una métrica clave para el balanceo de cargas.

  3. Un agente especial de GKE supervisa continuamente el uso de recursos de tus Pods (por ejemplo, la CPU) y envía estos datos a la infraestructura de Cloud Load Balancing con regularidad. Si un Pod tiene varios contenedores, el agente calcula su utilización combinada.

  4. La infraestructura de Cloud Load Balancing analiza los datos de utilización en tiempo real para ajustar de forma dinámica la distribución del tráfico. Determina la cantidad de tráfico que se enviará a cada grupo de Pods (cada NEG zonal) evaluando su utilización promedio de recursos (como la carga de CPU) y otros factores, como la latencia de la red. Este proceso cambia automáticamente el tráfico de los Pods con mayor carga a los que tienen menor carga, lo que garantiza un uso eficiente de los recursos en la región más cercana.

En el siguiente ejemplo, se muestra cómo funciona el balanceo de cargas basado en la utilización.

Ejemplo: Cómo controlar los Pods sobreutilizados

Cuando tu Service ejecuta varios contenedores dentro del mismo Pod, el agente de métricas de GKE informa el uso de recursos de cada contenedor por separado. Luego, la infraestructura de Cloud Load Balancing calcula un promedio ponderado de su uso para obtener la capacidad total del Pod.

Balanceo de cargas basado en la utilización para los servicios de GKE.
Figura 1: Distribución inteligente del tráfico basada en el uso de CPU del backend en una configuración de balanceador de cargas administrado por GKE.

En la Figura 1, se muestra cómo Cloud Load Balancing usa las métricas de utilización de CPU en tiempo real de GKE para optimizar la distribución del tráfico entre los Pods implementados en varias zonas. La solicitud del cliente se enruta a través de la puerta de enlace de GKE a los Pods de backend que se agrupan en NEG en tres zonas.

  • En la zona 1, el Pod informa un uso de CPU del 90%. El balanceador de cargas reduce el tráfico a este Pod para evitar la sobrecarga.

  • En la zona 2, el Pod se utiliza de forma moderada con un 60% de CPU y sigue recibiendo tráfico.

  • En la zona 3, el Pod informa un uso de CPU bajo del 40% y podría recibir más tráfico. GKE envía continuamente metadatos y métricas de utilización a la infraestructura de Cloud Load Balancing, que ajusta de forma inteligente el enrutamiento del tráfico para mantener el rendimiento y la disponibilidad de las aplicaciones.

Considera una situación en la que tu servicio está configurado para un uso máximo de CPU del 80%. Si los Pods de la zona 1 informan un 90% de uso de CPU, lo que supera el umbral, ocurre lo siguiente:

  1. La infraestructura de Cloud Load Balancing detecta este uso excesivo.
  2. Luego, rebalancea el tráfico de forma inteligente y reduce la cantidad de tráfico que envía a los Pods de la zona 1. Este reequilibrio continúa hasta que el uso promedio de CPU para los Pods en esa zona vuelva a estar por debajo del umbral de uso del 80%.
  3. A medida que los Pods de la zona 1 informan un menor uso de CPU (por debajo del umbral del 80%), la infraestructura de Cloud Load Balancing vuelve a evaluar la distribución del tráfico. Luego, vuelve a balancear el tráfico de forma gradual entre todos los Pods que respaldan el servicio y sigue distribuyendo el tráfico de manera eficiente según la utilización.

¿Qué sigue?