19 MetalLB #
Consulte a documentação oficial do MetalLB.
O MetalLB é uma implementação de balanceador de carga para clusters Kubernetes bare metal, usando protocolos de roteamento padrão.
Em ambientes bare metal, a configuração de balanceadores de carga de rede é visivelmente mais complexa do que em ambientes de nuvem. Ao contrário das chamadas de API simples nas configurações de nuvem, o bare metal requer aplicações de rede dedicadas ou uma combinação de balanceadores de carga e configurações de IP virtual (VIP, Virtual IP) para gerenciar a alta disponibilidade (HA, High Availability) ou resolver o ponto único de falha (SPOF, Single Point of Failure) inerentes em um balanceador de carga de nó único. Essas configurações não são automatizadas com facilidade, criando desafios para as implantações do Kubernetes em que a escala dos componentes aumenta e reduz de forma dinâmica.
O MetalLB resolve esses desafios usando o modelo do Kubernetes para criar serviços do tipo LoadBalancer como se operassem em um ambiente de nuvem, mesmo nas configurações bare metal.
Há duas abordagens diferentes, pelo modo L2 (usando truques de ARP) ou pelo BGP. Basicamente, o L2 não precisa de equipamento de rede especial, mas o BGP costuma ser melhor. Isso depende do caso de uso.
19.1 Como o SUSE Edge usa o MetalLB? #
O SUSE Edge usa o MetalLB de duas maneiras principais:
Como solução de balanceador de carga: o MetalLB atua como solução de balanceador de carga para máquinas bare metal.
Em uma configuração do K3s/RKE2 de alta disponibilidade: o MetalLB permite o balanceamento de carga da API do Kubernetes usando um endereço IP virtual.
Para expor a API, o Endpoint Copier Operator (Capítulo 20, Endpoint Copier Operator) é usado para sincronização dos endpoints da API
K8s do serviço kubernetes
com um serviço LoadBalancer
kubernetes-vip
.
19.2 Melhores práticas #
A instalação do MetalLB no modo L2 está descrita no Capítulo 25, MetalLB no K3s (usando o modo de camada 2).
Um guia para instalação do MetalLB na frente do
kube-api-server
para obter uma topologia de alta
disponibilidade está disponível no Capítulo 26, MetalLB na frente do servidor da API Kubernetes.
19.3 Problemas conhecidos #
O K3s vem com a própria solução de balanceador de carga chamada
Klipper
. Para usar o MetalLB, é necessário desabilitar oKlipper
. Para fazer isso, inicie o servidor K3s com a opção--disable servicelb
, conforme descrito na documentação do K3s.