Compartir a través de


Introducción a MetalLB para clústeres de Kubernetes

Se aplica a: Azure Stack HCI, versión 23H2

Al configurar el clúster de AKS Arc, necesita una manera de que los servicios sean accesibles fuera del clúster. El LoadBalancer tipo es ideal para esta accesibilidad, pero la dirección IP externa permanece pendiente. La extensión MetalLB Arc es una herramienta que permite generar direcciones IP externas para sus aplicaciones y servicios. Los clústeres de Kubernetes habilitados para Arc se pueden integrar con MetalLB mediante la Arc Networking extensión k8s.

Para que los servicios sean accesibles fuera del clúster, MetalLB necesita direcciones IP. MetalLB se encarga de asignar y liberar estas direcciones según sea necesario al crear servicios, pero solo distribuye las direcciones IP que se encuentran en sus grupos configurados. Cuando MetalLB asigna una dirección IP externa a un servicio, informa a la red fuera del clúster de que esta dirección IP pertenece al clúster. Esta comunicación se realiza mediante protocolos de red estándar como ARP o BGP.

  • Modo de capa 2 (ARP): en el modo de capa 2, un nodo K8s del clúster toma posesión del servicio y usa protocolos de detección de direcciones estándar (ARP para IPv4) para que esas direcciones IP sean accesibles en la red local. Desde el punto de vista de la LAN, la máquina que anuncia simplemente tiene varias direcciones IP.
  • BGP: en el modo BGP, todas las máquinas del clúster establecen sesiones de emparejamiento BGP con enrutadores cercanos que controla y indican a esos enrutadores cómo reenviar el tráfico a las direcciones IP del servicio. El uso de BGP permite el equilibrio de carga verdadero entre varios nodos y el control de tráfico específico debido a los mecanismos de directiva de BGP.

MetalLB tiene dos componentes:

  • Controlador: responsable de asignar ip para cada servicio de type=loadbalancer.
  • Orador: responsable de la publicidad de la dirección IP mediante ARP o BGP protocolo. Para satisfacer el requisito de alta disponibilidad (HA), la implementación del hablante es un daemonset.

Nota

  • Los pods de altavoz usan la red host; Es decir, su dirección IP es la dirección IP del nodo, de modo que puedan enviar directamente mensajes de difusión a través de la interfaz de red del host.
  • El pod del controlador es un pod normal que reside en cualquier nodo del clúster.

Arquitectura de MetalLB

  • En el modo ARP, se selecciona uno de los pods del hablante como líder. A continuación, anuncia la dirección IP mediante un mensaje de difusión ARP, enlazando la dirección IP con la dirección MAC del nodo en el que reside. Por lo tanto, todo el tráfico alcanza primero un nodo y, a continuación, kube-proxy lo propaga uniformemente a todos los pods de back-end del servicio.
  • En el modo BGP, todos los nodos de clúster establecen conexiones con todos los pares BGP creados en la BGP Peers pestaña. Normalmente, un par BGP es un conmutador TOR. Para difundir la información de enrutamiento de BGP, los pares BGP deben configurarse para que reconozcan la dirección IP y el ASN de los nodos del clúster. Cuando se usa BGP con ECMP (MultiPath de igual costo), el tráfico alcanza uniformemente en todos los nodos y, por tanto, logra un equilibrio de carga verdadero.

Comparar los modos MetalLB L2 (ARP) y BGP

La elección entre el modo L2 y BGP con MetalLB depende de los requisitos específicos, la infraestructura de red y los escenarios de implementación:

Aspecto MetalLB en modo L2 (ARP) MetalLB en modo BGP
Información general En el modo de capa 2, un nodo K8s asume la responsabilidad de anunciar un servicio a la red local. Desde la perspectiva de la red, parece que el nodo K8s tiene varias direcciones IP asignadas a su interfaz de red. En el modo BGP, cada nodo K8s del clúster establece una sesión de emparejamiento BGP con los enrutadores de red y usa esa sesión de emparejamiento para anunciar las direcciones IP de los servicios de clúster externos.
Asignación de dirección IP Los grupos de direcciones IP de MetallLB deben estar en la misma subred que los nodos K8s. Los grupos de direcciones IP de MetallLB pueden estar en una red diferente de los nodos K8s.
Complejidad de la configuración Baja. Dado que proporciona direcciones IP en la misma red que los nodos de Kubernetes, solo tiene que especificar un CIDR de IP o un grupo de DIRECCIONES IP al configurar MetalLB. Alta. La configuración de BGP requiere conocimientos sobre el protocolo BGP y una comprensión de la infraestructura de red.
Escalabilidad Limitado a las redes de nivel 2, adecuadas para implementaciones K8 de tamaño pequeño a mediano. Adecuado para topologías de red complejas e implementaciones de K8s a gran escala.
Compatibilidad con la red de infraestructura Funciona con cualquier red, pero puede provocar inundaciones de ARP en clústeres K8s grandes, ya que se usa una única dirección IP para todos los servicios y el ancho de banda de entrada del servicio se limita al ancho de banda de un solo nodo. Requiere compatibilidad con BGP en la infraestructura de red.
Ingeniería de tráfico Control limitado sobre el enrutamiento del tráfico. Control específico sobre el enrutamiento del tráfico mediante atributos BGP.
Conectividad externa Requiere más configuración para la conectividad externa. Proporciona conectividad perfecta con redes externas mediante el enrutamiento BGP.

Pasos siguientes