Acerca del balanceo de cargas en GKE

En esta página, se proporciona una descripción general de cómo Google Kubernetes Engine (GKE) crea y administra Cloud Load Balancing. En esta página, se supone que conoces lo siguiente:

Esta página está dirigida a arquitectos de nube y especialistas en herramientas de redes que diseñan la red para su organización. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el Cloud de Confiance contenido, consulta Roles de usuario y tareas comunes de GKE Enterprise.

Cómo GKE crea balanceadores de cargas

Para que tus aplicaciones sean accesibles desde fuera del clúster (usuarios externos) o dentro de tu red privada (usuarios internos), puedes exponerlas aprovisionando balanceadores de cargas con las APIs de Gateway, Ingress y Service. Como alternativa, puedes crear los componentes del balanceador de cargas tú mismo, mientras que GKE administra los grupos de extremos de red (NEG) que conectan tu balanceador de cargas a los Pods de tu clúster.

Puerta de enlace

El controlador de Gateway de GKE es la implementación de Google de la API de Gateway de Kubernetes para Cloud Load Balancing. La API de Gateway es un proyecto de código abierto que tiene como objetivo estandarizar la forma en que las mallas de servicios y los controladores de entrada exponen las aplicaciones en Kubernetes. La API de Gateway está diseñada para ser un sucesor más expresivo, flexible y extensible del recurso Ingress.

El controlador de Gateway de GKE se usa para configurar balanceadores de cargas de aplicaciones de capa 7 para exponer el tráfico HTTP(S) a las aplicaciones que se ejecutan en el clúster.

Práctica recomendada:

Usa la API de Gateway para implementar tu balanceador de cargas.

Entrada

El controlador de Ingress de GKE es la implementación de Google de la API de Ingress. La API de Ingress te permite administrar el acceso externo a los servicios que se ejecutan en un clúster. Cuando creas un recurso de Ingress en GKE, el controlador configura automáticamente un balanceador de cargas de aplicaciones de capa 7 que permite que el tráfico HTTP o HTTP(S) llegue a tus aplicaciones que se ejecutan en el clúster.

GKE Gateway es la opción recomendada para las implementaciones y aplicaciones nuevas que requieren administración avanzada del tráfico, compatibilidad con varios protocolos o mejor capacidad de múltiples usuarios. Sin embargo, GKE Ingress es una opción viable para situaciones de enrutamiento HTTP/HTTPS más simples, en especial para las configuraciones existentes en las que los beneficios de la migración a la API de Gateway aún no superan el esfuerzo.

Objetos Service LoadBalancer

La API de Service te permite exponer aplicaciones que se ejecutan como Pods en tu clúster al tráfico externo o interno Cuando creas un Service de tipo LoadBalancer, GKE crea automáticamente un balanceador de cargas de red de transferencia de capa 4 (TCP/UDP) según los parámetros de tu manifiesto de Service.

En los balanceadores de cargas de red de transferencia, cuando el tráfico llega a tus VMs de backend, las direcciones IP de origen y destino originales, el protocolo de comunicación (como TCP o UDP) y los números de puerto (si el protocolo los usa) siguen siendo los mismos. Esto significa que el tráfico se pasa directamente a las VMs o los Pods de backend, y el balanceador de cargas no finaliza las conexiones. Los servicios de backend controlan la finalización de las conexiones y garantizan que el tráfico fluya sin problemas del cliente al Service.

Balanceo de cargas ponderado

Si configuraste un Service LoadBalancer externo al que pueden acceder los clientes fuera de tu red de VPC y las Cloud de Confiance VMs, puedes habilitar el balanceo de cargas ponderado. El balanceo de cargas ponderado distribuye el tráfico según la cantidad de Pods de servicio en cada nodo de GKE, de modo que los nodos que tienen más Pods de servicio reciban una mayor proporción de tráfico en comparación con los nodos que tienen menos Pods.

NEG independientes

Otro método para administrar tus balanceadores de cargas en GKE es crear los componentes del balanceador de cargas tú mismo y permitir que GKE administre los NEG. Este tipo de balanceador de cargas se denomina balanceador de cargas de red de proxy. Los NEG son una forma de representar grupos de extremos de backend (por ejemplo, Pods) para el balanceo de cargas.

Este tipo de balanceador de cargas está diseñado solo para el tráfico de TCP. Los balanceadores de cargas de red de proxy distribuyen el tráfico de TCP a los backends en tu red de VPC o en otros entornos de nube. El tráfico finaliza en la capa de balanceo de cargas. Luego, el balanceador de cargas reenvía el tráfico mediante el establecimiento de nuevas conexiones TCP al backend disponible más cercano.

¿Qué es el balanceo de cargas nativo del contenedor?

El balanceo de cargas nativo del contenedor es la práctica de distribuir el tráfico de manera uniforme directamente a las direcciones IP de los Pods individuales (en lugar de los nodos) mediante los NEG GCE_VM_IP_PORT. Los NEG GCE_VM_IP_PORT te permiten especificar extremos de backend con la dirección IP interna principal de una máquina virtual (VM) de Compute Engine o una dirección IP de uno de los rangos de IP de alias configurados de la VM.

El balanceo de cargas nativo del contenedor se usa para todos los balanceadores de cargas de capa 7 administrados por GKE, incluidos Gateway y Ingress, y los NEG independientes. Los objetos Service LoadBalancer no usan el balanceo de cargas nativo del contenedor. Sin embargo, puedes lograr una capacidad similar si habilitas el balanceo de cargas ponderado.

El balanceo de cargas nativo del contenedor tiene varias ventajas, incluido un mejor rendimiento de la red y verificaciones de estado mejoradas, ya que se dirige directamente a los Pods. Para obtener más información, consulta Balanceo de cargas nativo del contenedor.

Tablas de resumen

Usa las siguientes tablas para planificar tu configuración de balanceo de cargas.

Elige un tipo de balanceador de cargas

En la siguiente tabla, se muestra qué tipo de balanceador de cargas se crea para un recurso determinado (Gateway, Ingress o Service LoadBalancer):

Recurso de Kubernetes Tipo de balanceador de cargas creado
Balanceador de cargas de aplicaciones Balanceador de cargas de red de transferencia
Puerta de enlace
Entrada
Service LoadBalancer

Elige un método para crear un balanceador de cargas

En la siguiente tabla, se muestran las opciones en GKE para crear el balanceador de cargas elegido:

Tipo de balanceador de cargas Métodos para crear el balanceador de cargas elegido
Puerta de enlace Entrada Service LoadBalancer NEG independientes
Balanceador de cargas de aplicaciones externo global
Balanceador de cargas de aplicaciones externo clásico
Balanceador de cargas de aplicaciones externo regional
Balanceador de cargas de aplicaciones interno regional
Balanceador de cargas de aplicaciones interno entre regiones
Balanceador de cargas de red de proxy
(todos los tipos)
Balanceador de cargas de red de transferencia
(interno y externo)

¿Qué sigue?