BLOG | NGINX

Automatice el equilibrio de carga TCP en los servicios locales de Kubernetes con NGINX

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Chris Akker
Chris Akker
Publicado el 22 de agosto de 2023

Eres un desarrollador de aplicaciones moderno. Utiliza una colección de herramientas de código abierto y quizás algunas comerciales para escribir, probar, implementar y administrar nuevas aplicaciones y contenedores. Ha elegido Kubernetes para ejecutar estos contenedores y pods en entornos de desarrollo, prueba, preparación y producción. Ha adoptado las arquitecturas y los conceptos de los microservicios, la Cloud Native Computing Foundation y otros estándares modernos de la industria.

En este viaje, has descubierto que Kubernetes es realmente poderoso. Pero probablemente también te habrá sorprendido lo difícil, inflexible y frustrante que puede ser. Implementar y coordinar cambios y actualizaciones de enrutadores, firewalls, balanceadores de carga y otros dispositivos de red puede resultar abrumador, ¡especialmente en su propio centro de datos! Es suficiente para hacer llorar a un desarrollador.

La forma en que afronte estos desafíos tiene mucho que ver con dónde y cómo ejecute Kubernetes (como un servicio administrado o en las instalaciones). Este artículo aborda el equilibrio de carga de TCP, un área clave donde las opciones de implementación afectan la facilidad de uso.

Equilibrio de carga TCP con Kubernetes administrado (también conocida como la opción fácil)

Si utiliza un servicio administrado, como un proveedor de nube pública para Kubernetes, gran parte de esas tareas tediosas de red se gestionan automáticamente. Con solo un comando ( kubectl apply -f loadbalancer.yaml ), el tipo de servicio LoadBalancer le proporciona una IP pública, un registro DNS y un balanceador de carga TCP. Por ejemplo, puede configurar Amazon Elastic Load Balancer para distribuir el tráfico a los pods que contienen NGINX Ingress Controller y, al usar este comando, no tener preocupaciones cuando cambien los backends. ¡Es tan fácil que seguro lo das por sentado!

Equilibrio de carga TCP con Kubernetes local (también conocida como la opción difícil)

Con clústeres locales, es un escenario totalmente diferente. Usted o sus colegas de la red deben proporcionar los elementos necesarios para la creación de redes. Quizás te preguntes: "¿Por qué es tan difícil conseguir usuarios para mis aplicaciones de Kubernetes?" La respuesta es sencilla pero un poco impactante: El tipo de servicio LoadBalancer, la puerta de entrada a su clúster, en realidad no existe.

Para exponer sus aplicaciones y servicios fuera del clúster, su equipo de red probablemente requiera tickets, aprobaciones, procedimientos y tal vez incluso revisiones de seguridad, todo antes de reconfigurar sus equipos. O tal vez necesites hacerlo todo tú mismo, reduciendo al mínimo el ritmo de entrega de la aplicação . Peor aún, no te atreves a realizar cambios en ningún servicio de Kubernetes, porque si cambia NodePort , el tráfico podría bloquearse. Y todos sabemos lo mucho que les gusta a los usuarios recibir errores 500. A tu jefe probablemente le guste aún menos.

Una mejor solución para el equilibrio de carga TCP local: Balanceador de carga NGINX para Kubernetes

Puedes convertir la “opción difícil” en la “opción fácil” con nuestro nuevo proyecto: Balanceador de carga NGINX para Kubernetes . Este proyecto gratuito es un controlador de Kubernetes que observa el controlador de ingreso NGINX y actualiza automáticamente una instancia externa NGINX Plus configurada para el equilibrio de carga. Al tener un diseño muy sencillo, es fácil de instalar y operar. Con esta solución, puede implementar el equilibrio de carga TCP en entornos locales, lo que garantiza que las nuevas aplicaciones y servicios se detecten de inmediato y estén disponibles para el tráfico, sin necesidad de intervención.

Arquitectura y flujo

NGINX Loadbalancer para Kubernetes se encuentra dentro de un clúster de Kubernetes. Está registrado en Kubernetes para monitorear el servicio nginx-ingress (controlador de ingreso NGINX). Cuando se produce un cambio en los backends, NGINX Loadbalancer para Kubernetes recopila las IP de los trabajadores y los números de puerto TCP de NodePort, y luego envía la IP:puertos a NGINX Plus mediante la API de NGINX Plus . Los servidores upstream de NGINX se actualizan sin necesidad de recarga , y NGINX Plus balancea la carga del tráfico hacia los servidores upstream y los NodePorts de Kubernetes correctos. Se pueden agregar instancias NGINX Plus adicionales para lograr una alta disponibilidad .

Diagrama del balanceador de carga NGINX en acción

Una instantánea de NGINX Loadbalancer para Kubernetes en acción

En la captura de pantalla a continuación, hay dos ventanas que muestran NGINX Loadbalancer para Kubernetes implementado y haciendo su trabajo:

  1. Tipo de servicio : Balanceador de carga (para nginx-ingress )
  2. IP externa : se conecta a los servidores NGINX Plus
  3. Puertos : NodePort se asigna a 443:30158 con servidores ascendentes NGINX coincidentes (como se muestra en el panel de control en tiempo real de NGINX Plus)
  4. Registros : indica que NGINX Loadbalancer para Kubernetes está enviando datos correctamente a NGINX Plus

Nota : En este ejemplo, los nodos de trabajo de Kubernetes son 10.1.1.8 y 10.1.1.10

Una captura de pantalla de NGINX Loadbalancer para Kubernetes en acción

Empieza hoy

Si está frustrado con los desafíos de red en el borde de su clúster de Kubernetes, pruebe el proyecto y cuéntenos qué piensa. El código fuente de NGINX Loadbalancer para Kubernetes es de código abierto (bajo la licencia Apache 2.0) con todas las instrucciones de instalación disponibles en GitHub .  

Para brindar comentarios, déjenos un comentario en el repositorio o envíenos un mensaje en el Slack de la comunidad NGINX .


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.