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


En esta página se presenta el balanceo de carga 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 de carga de trabajo real para reequilibrar de forma inteligente el tráfico y, así, aumentar la disponibilidad de las aplicaciones y la flexibilidad del enrutamiento.

Esta página está dirigida a arquitectos de Cloud y especialistas en redes que gestionan servicios en GKE y quieren 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úrese de que conoce los siguientes conceptos:

Información general

La infraestructura de Cloud Load Balancing dirige el tráfico a los servicios de GKE en función de las métricas de accesibilidad estándar, como HTTP, HTTPS, HTTP/2 y gRPC, que determinan el estado y la idoneidad 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 opcionalmente, como GCPTrafficDistributionPolicy.

Las aplicaciones modernas monitorizan el uso de la CPU para que puedas conocer los costes, supervisar el rendimiento y gestionar la capacidad de forma eficaz. Para satisfacer esta necesidad, los balanceadores de carga usan datos de utilización de recursos en tiempo real como métrica, lo que les permite determinar el volumen de tráfico óptimo que puede procesar cada pod de backend para distribuir el tráfico de forma inteligente.

El balanceo de carga basado en la utilización de los servicios de GKE evalúa la utilización de los recursos como métrica para determinar la capacidad de los pods de backend de procesar el tráfico de aplicaciones. Después, vuelve a equilibrar el tráfico a otros back-ends si se utiliza en exceso uno o varios pods.

Características y ventajas

El balanceo de carga basado en la utilización ofrece las siguientes ventajas:

  • Aumenta la disponibilidad de las aplicaciones: prioriza el tráfico a los pods con menor uso de recursos cuando los back-ends están bajo presión, lo que ayuda a mantener el rendimiento de las aplicaciones, evita las ralentizaciones y las interrupciones, y contribuye a que los usuarios disfruten de una experiencia fiable.

  • 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 ajusten con precisión a tus casos prácticos.

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

El balanceo de carga basado en la utilización de los servicios de GKE mejora la forma en que se gestiona el tráfico de las 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 usando muchas instancias (pods) en diferentes máquinas. Recibe tráfico de dos formas principales:

  • Desde fuera del clúster (tráfico de norte a sur): tu clúster recibe tráfico de Internet u otras fuentes externas, lo que se conoce como tráfico de norte a sur. Un balanceador de carga gestionado por GKE (Gateway) dirige este tráfico desde fuera del clúster.

  • Desde dentro 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 de tu clúster de GKE o entre varios clústeres. Este flujo de tráfico interno se conoce como tráfico este-oeste.

El balanceo de carga basado en la utilización de los servicios de GKE implica un proceso continuo en el que los agentes de GKE recogen métricas de utilización de los pods que permiten a la infraestructura de Cloud Load Balancing distribuir el tráfico de forma inteligente. En los pasos siguientes se resume cómo gestiona el balanceo de carga basado en la utilización de los servicios de GKE el tráfico de tu aplicación en función del uso de recursos en tiempo real:

  1. Cuando configuras tu servicio de GKE con un balanceador de carga de aplicaciones (puerta de enlace), GKE crea automáticamente NEGs para cada zona y asigna los pods de tu aplicación a estos NEGs. Al principio, la distribución del tráfico se basa en comprobaciones de estado básicas y en tu configuración predeterminada.

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

  3. Un agente especial de GKE monitoriza 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 dinámicamente la distribución del tráfico. Determina la cantidad de tráfico que se debe enviar a cada grupo de pods (cada NEG zonal) evaluando su uso medio 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 una carga menor, 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 carga basado en la utilización.

Ejemplo: Gestión de pods sobreutilizados

Cuando tu servicio ejecuta varios contenedores en el mismo pod, el agente de métricas de GKE informa del uso de recursos de cada contenedor por separado. A continuación, la infraestructura de Cloud Load Balancing calcula una media ponderada de su utilización para obtener la capacidad total del pod.

Balanceo de carga basado en la utilización para 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 carga gestionado por GKE.

En la figura 1 se muestra cómo usa Cloud Load Balancing 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 NEGs en tres zonas.

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

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

  • En la zona 3, el pod informa de un uso de CPU bajo, del 40 %, y puede 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.

Imagina que tu servicio está configurado para que la utilización máxima de la CPU sea del 80%. Si los pods de la zona 1 informan de una utilización de la CPU del 90 %, que supera el umbral, ocurre lo siguiente:

  1. La infraestructura de Cloud Load Balancing detecta este uso excesivo.
  2. A continuación, vuelve a equilibrar 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 la utilización media de la CPU de los pods de esa zona vuelve a estar por debajo del umbral del 80 %.
  3. Como los pods de la zona 1 registran una utilización de la CPU inferior (por debajo del umbral del 80 %), la infraestructura de Cloud Load Balancing vuelve a evaluar la distribución del tráfico. Después, vuelve a equilibrar gradualmente el tráfico entre todos los pods que respaldan el servicio y sigue distribuyendo el tráfico de forma eficiente en función del uso.

Siguientes pasos