Visão geral do MetalLB para clusters Kubernetes

Aplica-se a: Azure Stack HCI, versão 23H2

Ao configurar o cluster do AKS Arc, você precisa de uma maneira de tornar seus serviços acessíveis fora do cluster. O LoadBalancer tipo é ideal para essa acessibilidade, mas o IP externo permanece pendente. A extensão MetalLB 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 Arc Networking extensão k8s.

Para tornar seus 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 apenas IPs que estão em seus pools configurados. Quando o MetalLB atribui um endereço IP externo a um serviço, ele informa à rede fora do cluster que esse IP pertence ao cluster. Essa comunicação é feita usando protocolos de rede padrão como ARP ou BGP.

  • 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) para tornar esses IPs acessíveis na rede local. Do ponto de vista da LAN, a máquina de anúncio simplesmente tem vários endereços IP.
  • BGP: No modo BGP, todas as máquinas no cluster estabelecem sessões de peering BGP com roteadores próximos que você controla e informam a esses roteadores como encaminhar o tráfego para os IPs de serviço. O uso do BGP permite o balanceamento de carga real em vários nós e o controle de tráfego refinado devido aos mecanismos de política do BGP.

O MetalLB tem dois componentes:

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

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 da interface de rede do host.
  • O pod do controlador é um pod normal que reside em qualquer nó do cluster.

Arquitetura MetalLB

  • No modo ARP, um dos pods de alto-falante é selecionado como líder. Em seguida, ele 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 BGP Peers guia. Normalmente, um par BGP é um switch TOR. Para transmitir as informações de roteamento BGP, os pares BGP devem ser configurados para que reconheçam o IP e o ASN dos nós do cluster. Quando você usa o BGP com ECMP (Equal-Cost MultiPath), o tráfego atinge uniformemente todos os nós e, portanto, alcança o balanceamento de carga real.

Compare os modos MetalLB L2 (ARP) e BGP

A escolha entre o modo L2 e BGP com o MetalLB depende de seus requisitos específicos, infraestrutura de rede e 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 anunciar um serviço para a rede local. Do ponto de vista da rede, parece que o nó K8s tem vários endereços IP atribuídos à sua interface de rede. No modo BGP, cada nó K8s em seu cluster estabelece uma sessão de emparelhamento BGP com seus roteadores de rede e usa essa sessão de emparelhamento para anunciar os IPs de serviços de cluster externos.
Atribuição de endereço IP Os pools de endereços IP do MetallLB devem estar na mesma sub-rede que os nós K8s. Os pools de endereços IP do MetallLB podem estar em uma rede diferente dos nós K8s.
Complexidade da configuração Baixo. Como você está fornecendo endereços IP na mesma rede que os nós do Kubernetes, você só precisa especificar um CIDR de IP ou pool de IP ao configurar o MetalLB. Alto. A configuração do BGP requer conhecimento do protocolo BGP e uma compreensão da sua 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ó. Requer suporte a BGP na infraestrutura de rede.
Engenharia de tráfego Controle limitado sobre o roteamento do tráfego. Controle refinado sobre o roteamento de tráfego usando atributos BGP.
Conectividade externa Requer mais configuração para conectividade externa. Fornece conectividade perfeita com redes externas usando roteamento BGP.

Perguntas frequentes

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

Não, o MetalLB não pode ser reutilizado em clusters do AKS Arc. O MetalLB vive como pods em um cluster do 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 os modelos do Azure Resource Manager e criar balanceadores de carga para cada cluster do AKS Arc.

Próximas etapas