Compartilhar via


Visão geral do MetalLB para clusters Kubernetes

Aplica-se a: AKS no Azure Local

Ao configurar o cluster AKS Arc, você precisa de uma maneira de tornar os serviços acessíveis fora do cluster. O tipo LoadBalancer é ideal para essa acessibilidade, mas o IP externo continua pendente. A extensão MetalLB do Kubernetes habilitado pelo Azure Arc é uma ferramenta que permite gerar IPs externos para seus aplicativos e serviços. Os clusters do Kubernetes habilitados para Arc podem se integrar ao MetalLB usando a extensão do MetalLB para Kubernetes habilitado para Azure Arc.

Para tornar os serviços acessíveis fora do cluster, o MetalLB precisa de endereços IP. O MetalLB se encarrega de atribuir e liberar esses endereços conforme necessário quando você cria serviços, mas distribui somente os IPs que estão nos pools configurados. Quando o MetalLB atribui um endereço IP externo a um serviço, informa à rede fora do cluster que esse IP pertence ao cluster. Essa comunicação é feita usando protocolos de rede padrão, como Protocolo de Resolução de Endereço (ARP) ou BGP (Border Gateway Protocol).

  • Modo de camada 2 (ARP): no modo de camada 2, um nó K8s no cluster assume a propriedade do serviço e usa protocolos de descoberta de endereço padrão (ARP para IPv4) a fim de tornar esses IPs acessíveis na rede local. Do ponto de vista da LAN, a máquina que faz o anúncio simplesmente tem vários endereços IP.
  • BGP: No modo BGP, todos os computadores no cluster estabelecem sessões de emparelhamento BGP com roteadores próximos que você controla e os computadores informam a esses roteadores como encaminhar o tráfego para os IPs de serviço. O uso do BGP permite o balanceamento de carga verdadeiro em vários nós e o controle de tráfego refinado devido a mecanismos de política BGP.

O MetalLB tem dois componentes:

  • Controlador: responsável por alocar um IP para cada serviço do type=loadbalancer.
  • Locutor: responsável por anunciar o IP usando o protocolo ARP ou BGP. Para atender ao requisito de HA (alta disponibilidade), a implantação do alto-falante é um daemonset.

Observação

  • Os pods de alto-falante usam a rede host; ou seja, seu IP é o IP do nó, para que eles possam enviar mensagens de transmissão diretamente por meio do adaptador de rede do host.
  • O pod do controlador é um pod normal que reside em qualquer nó do cluster.

Arquitetura do MetalLB

  • No modo ARP, um dos pods de alto-falante é selecionado como líder. Em seguida, o sistema anuncia o IP usando uma mensagem de broadcast ARP, vinculando o IP ao endereço MAC do nó em que reside. Assim, todo o tráfego atinge primeiro um nó e, em seguida, o kube-proxy o espalha uniformemente para todos os pods de back-end do serviço.
  • No modo BGP, todos os nós de cluster estabelecem conexões com todos os pares BGP criados na guia Pares BGP . Normalmente, um par BGP é um comutador TOR. Para transmitir as informações de roteamento BGP, os pares BGP devem ser configurados para reconhecer o IP e o ASN dos nós do cluster. Quando você usa BGP com ECMP (Equal-Cost MultiPath), o tráfego atinge todos os nós de modo uniforme e, assim, obtém o balanceamento de carga real.

Comparar os modos MetalLB L2 (ARP) e BGP

A escolha entre o modo L2 e BGP com MetalLB depende de seus requisitos específicos, da infraestrutura de rede e dos cenários de implantação:

Aspecto MetalLB no modo L2 (ARP) MetalLB no modo BGP
Visão geral No modo de camada 2, um nó K8s assume a responsabilidade de publicitar um serviço na rede local. Do ponto de vista da rede, parece que o nó K8s tem vários endereços IP atribuídos ao seu adaptador de rede. No modo BGP, cada nó K8s em seu cluster estabelece uma sessão de pareamento BGP com seus roteadores de rede e usa essa sessão de pareamento para anunciar os IPs de serviços de cluster externos.
Atribuição de endereço IP Os pools de endereços IP do MetalLB devem estar na mesma sub-rede que os nós K8s. Os pools de endereços IP do MetalLB podem estar em uma rede diferente dos nós K8s.
Complexidade da configuração Baixa. Como você está fornecendo endereços IP na mesma rede que os nós do Kubernetes, só precisa especificar um CIDR de IP ou pool de IP ao configurar o MetalLB. Alta. A configuração do BGP exige conhecimento do protocolo BGP e uma compreensão da infraestrutura de rede.
Escalabilidade Limitado a redes de Camada 2, adequado para implantações K8s de pequeno e médio porte. Adequado para topologias de rede complexas e implantações K8s em grande escala.
Compatibilidade com a rede de infraestrutura Funciona com qualquer rede, mas pode causar inundação de ARP em grandes clusters K8s, já que um único IP é usado para todos os serviços e a largura de banda de entrada do serviço é limitada à largura de banda de um único nó. Exige suporte para BGP na infraestrutura da rede.
Engenharia de tráfego Controle limitado do roteamento do tráfego. Controle refinado do roteamento do tráfego usando atributos de BGP.
Conectividade externa Requer mais configuração para conectividade externa. Fornece conectividade contínua com redes externas usando o roteamento BGP.

perguntas frequentes

Uma instância do MetalLB pode ser reutilizada em clusters AKS Arc?

Não, o MetalLB não pode ser reutilizado em clusters AKS Arc. O MetalLB existe como pods em um cluster Kubernetes, e os balanceadores de carga são recursos personalizados (CRs). Você deve instalar a extensão K8s do MetalLB Arc usando a CLI do Azure, o portal do Azure ou modelos do Azure Resource Manager e criar balanceadores de carga para cada cluster do AKS Arc.

Próximas etapas

Implantar o MetalLB usando o portal do Azure