15 MetalLB #
Véase la documentación oficial de MetalLB.
MetalLB es una implementación de balance de la carga para clústeres de Kubernetes en equipo sin sistema operativo, que utiliza protocolos de enrutamiento estándar.
En entornos de equipo sin sistema operativo, configurar balanceadores de carga de red es notablemente más complejo que en entornos en la nube. A diferencia de las sencillas llamadas a la API en configuraciones en la nube, el entorno de equipo sin sistema operativo requiere dispositivos de red dedicados o una combinación de balanceadores de carga y configuraciones de IP virtual (VIP) para gestionar la alta disponibilidad (HA) o resolver el posible punto único de fallo (SPOF) inherente a un balanceador de carga de un solo nodo. Estas configuraciones no se automatizan fácilmente, lo que plantea desafíos en los despliegues de Kubernetes donde los componentes se escalan dinámicamente.
MetalLB aborda estos desafíos aprovechando el modelo de Kubernetes para crear servicios del tipo LoadBalancer como si estuvieran operando en un entorno en la nube, incluso en configuraciones de equipo sin sistema operativo.
Existen dos enfoques diferentes, mediante modo L2 (usando trucos ARP) o mediante BGP. Principalmente, L2 no necesita ningún equipo de red especial, pero BGP es, en general, mejor. Depende de los casos de uso.
15.1 ¿Cómo utiliza SUSE Edge MetalLB? #
SUSE Edge utiliza MetalLB de tres formas clave:
Como solución de balance de la carga: MetalLB sirve como solución de balance de la carga para máquinas de equipo sin sistema operativo.
Para una configuración de HA K3s/RKE2: MetalLB permite equilibrar la carga de la API de Kubernetes mediante una dirección IP virtual.
Como solución BGP de capa 3, MetalLB anuncia rutas a las IP de servicio a los routers cercanos.
Para poder exponer la API, se utiliza el Endpoint Copier Operator (Chapter 16, Operador de Endpoint Copier) para mantener sincronizados los endpoints de la API de K8s desde el servicio kubernetes a un servicio del tipo LoadBalancer kubernetes-vip.
15.2 Prácticas recomendadas #
La instalación de MetalLB en modo L2 se describe en Chapter 21, MetalLB en K3s (usando el modo de capa 2) y para el modo L3 en Chapter 22, MetalLB en K3s (usando el modo de capa 3).
Puede encontrar una guía sobre la instalación de MetalLB delante de kube-api-server para lograr una topología de alta disponibilidad en Chapter 24, MetalLB delante del servidor de API de Kubernetes.
15.3 Problemas conocidos #
K3s incluye su propia solución de balance de la carga llamada
Klipper. Para utilizarKlipper`MetalLB, debe desactivarse. Esto puede hacerse iniciando el servidor K3s con la opción `--disable servicelb, tal como se describe en la documentación de K3s.