Partilhar via


Visão geral do MetalLB para clusters Kubernetes

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

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

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, informa a rede fora do cluster de que esse IP pertence ao cluster. Esta 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 emparelhamento 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 um verdadeiro balanceamento de carga em vários nós e um controle de tráfego refinado devido aos mecanismos de política do BGP.

O MetalLB tem duas componentes:

  • Controlador: responsável pela alocação de IP para cada serviço de type=loadbalancer.
  • Palestrante: responsável pela publicidade do IP usando ARP ou BGP protocolo. Para satisfazer o requisito de alta disponibilidade (HA), a implantação do alto-falante é um daemonset.

Nota

  • Os pods de alto-falantes usam a rede host; ou seja, seu IP é o IP do nó, para que eles possam enviar mensagens broadcast diretamente através da interface de rede host.
  • O pod controlador é um pod normal que vive em qualquer nó do cluster.

Arquitetura MetalLB

  • No modo ARP, um dos pods de alto-falantes é selecionado como líder. Em seguida, anuncia o IP usando uma mensagem de difusão ARP, ligando o IP com o endereço MAC do nó em que vive. Assim, todo o tráfego primeiro atinge 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 BGP com ECMP (Equal-Cost MultiPath), o tráfego atinge uniformemente todos os nós e, portanto, alcança o verdadeiro balanceamento de carga.

Compare os modos MetalLB L2 (ARP) e BGP

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

Aspeto MetalLB em modo L2 (ARP) MetalLB em modo BGP
Descriçã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 seus nós do Kubernetes, você só precisa especificar um CIDR IP ou pool de IP ao configurar o MetalLB. Elevada. Configurar o 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 a 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 ARP em grandes clusters K8s, uma vez 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 de 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.

FAQ

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 vive 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 os modelos do Azure Resource Manager e criar balanceadores de carga para cada cluster do AKS Arc.

Próximos passos