19 MetalLB #
Consulte la documentación oficial de MetalLB.
MetalLB es una implementación de equilibrador de carga para clústeres de Kubernetes en bare metal que utiliza protocolos de enrutamiento estándar.
En entornos bare metal, configurar equilibradores de carga de red es notablemente más complejo que en entornos en la nube. A diferencia de las sencillas llamadas a la API de las configuraciones en la nube, en bare metal se requieren dispositivos de red dedicados o una combinación de equilibradores de carga y configuraciones de IP virtual (VIP) para gestionar la alta disponibilidad (HA) o abordar el posible punto único de fallo (SPOF) inherente a que haya un equilibrador de carga de un solo nodo. Estas configuraciones no se automatizan fácilmente, lo que plantea retos en los despliegues de Kubernetes, donde los componentes se escalan dinámicamente.
MetalLB aborda estos retos aprovechando el modelo de Kubernetes para crear servicios de tipo LoadBalancer como si estuvieran operando en un entorno de nube, incluso en configuraciones bare metal.
Hay dos enfoques distintos, mediante el modo L2 (que usa tricks ARP) o mediante BGP. A rasgos generales, el modo L2 no necesita ningún equipo de red especial, pero BGP suele ser mejor. El uso de un enfoque u otro dependerá de los casos de uso.
19.1 ¿Cómo se usa MetalLB en SUSE Edge? #
SUSE Edge usa MetalLB principalmente de dos formas:
Como solución de equilibrador de carga: MetalLB sirve como solución de equilibrio de carga para equipos bare metal.
En configuraciones K3s/RKE2 de HA: MetalLB permite equilibrar la carga de la API de Kubernetes utilizando una dirección IP virtual.
Para poder exponer la API, se utiliza el operador Endpoint Copier Operator
(Capítulo 20, Endpoint Copier Operator) para mantener sincronizados los puntos
finales de la API de K8s desde el servicio kubernetes
con
un servicio LoadBalancer kubernetes-vip
.
19.2 Prácticas recomendadas #
La instalación de MetalLB en el modo L2 se describe en el Capítulo 25, MetalLB en K3s (con el modo de capa 2).
Hay disponible una guía sobre cómo instalar MetalLB delante del
kube-api-server
para lograr una topología de alta
disponibilidad en el Capítulo 26, MetalLB delante del servidor de Kubernetes API.
19.3 Problemas conocidos #
K3s incluye su propia solución de equilibrio de carga llamada
Klipper
. Para utilizar MetalLB, es necesario inhabilitarKlipper
. Para hacerlo, inicie el servidor K3s con la opción--disable servicelb
, tal y como se describe en la documentación de K3s.