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
ouBGP
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.
- 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.