Descrição geral do MetalLB para clusters do Kubernetes
Aplica-se a: Azure Stack HCI, versão 23H2
Quando configurar o cluster do AKS Arc, precisa de uma forma de tornar os seus serviços acessíveis fora do cluster. O LoadBalancer
tipo é ideal para esta acessibilidade, mas o IP externo permanece pendente. A extensão MetalLB Arc é uma ferramenta que lhe permite gerar IPs externos para as suas aplicações e serviços. Os clusters do Kubernetes compatíveis com o Arc podem ser integrados com o MetalLB com a Arc Networking
extensão k8s.
Para tornar os seus serviços acessíveis fora do cluster, o MetalLB precisa de endereços IP. O MetalLB trata de atribuir e libertar estes endereços conforme necessário quando cria serviços, mas distribui apenas os IPs que estão nos conjuntos configurados. Quando o MetalLB atribui um endereço IP externo a um serviço, informa a rede fora do cluster de que este IP pertence ao cluster. Esta comunicação é efetuada através de protocolos de rede padrão, como o ARP ou o BGP.
- Modo de camada 2 (ARP): no modo de camada 2, um nó K8s no cluster assume a propriedade do serviço e utiliza protocolos de deteção de endereços padrão (ARP para IPv4) para tornar esses IPs acessíveis na rede local. Do ponto de vista da LAN, o computador de anúncios tem simplesmente vários endereços IP.
- BGP: no modo BGP, todos os computadores no cluster estabelecem sessões de peering BGP com routers próximos que controla e informem esses routers como reencaminhar o tráfego para os IPs de serviço. A utilização do BGP permite um verdadeiro balanceamento de carga em vários nós e um controlo de tráfego detalhado devido aos mecanismos de política do BGP.
O MetalLB tem dois componentes:
- Controlador: responsável pela alocação de IP para cada serviço de
type=loadbalancer
. - Orador: responsável por anunciar o IP através
ARP
de ouBGP
protocolo. Para satisfazer o requisito de elevada disponibilidade (HA), a implementação de orador é um daemonset.
Nota
- Os pods de orador utilizam a rede de anfitrião; Ou seja, o IP é o IP do nó, para que possam enviar diretamente mensagens de difusão através da interface de rede do anfitrião.
- O pod do controlador é um pod normal que reside em qualquer nó no cluster.
- No modo ARP, um dos pods dos altifalantes é selecionado como líder. Em seguida, anuncia o IP através de uma mensagem de difusão do ARP, vinculando o IP ao endereço MAC do nó onde se encontra. Assim, todo o tráfego atinge primeiro um nó e, em seguida, o kube-proxy distribui-o uniformemente para todos os pods de back-end do serviço.
- No modo BGP, todos os nós de cluster estabelecem ligações com todos os elementos de rede BGP criados no
BGP Peers
separador. Normalmente, um elemento de rede BGP é um comutador TOR. Para difundir as informações de encaminhamento do BGP, os elementos de rede BGP têm de ser configurados para que reconheçam o IP e o ASN dos nós de cluster. Quando utiliza o BGP com o ECMP (Equal-Cost MultiPath), o tráfego atinge uniformemente todos os nós e, por conseguinte, consegue um verdadeiro balanceamento de carga.
Comparar os modos MetalLB L2 (ARP) e BGP
A escolha entre o modo L2 e BGP com MetalLB depende dos seus requisitos específicos, infraestrutura de rede e cenários de implementação:
Aspeto | MetalLB no modo L2 (ARP) | MetalLB no modo BGP |
---|---|---|
Descrição geral | No modo de camada 2, um nó K8s assume a responsabilidade de anunciar um serviço à rede local. Do ponto de vista da rede, parece que o nó K8s tem vários endereços IP atribuídos à respetiva interface de rede. | No modo BGP, cada nó K8s no cluster estabelece uma sessão de peering BGP com os routers de rede e utiliza essa sessão de peering para anunciar os IPs dos serviços de cluster externo. |
Atribuição de endereços IP | Os conjuntos de endereços IP metallLB têm de estar na mesma sub-rede que os nós K8s. | Os conjuntos de endereços IP metallLB podem estar numa rede diferente dos nós K8s. |
Complexidade da configuração | Baixo. Uma vez que está a fornecer endereços IP na mesma rede que os nós do Kubernetes, só precisa de especificar um CIDR ip ou conjunto IP durante a configuração do MetalLB. | Elevada. 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, adequadas para implementações K8s de pequena a média dimensão. | Adequado para topologias de rede complexas e implementações K8s em larga escala. |
Compatibilidade com a rede de infraestrutura | Funciona com qualquer rede, mas pode causar inundações de ARP em grandes clusters K8s, uma vez que um único IP é utilizado para todos os serviços e a largura de banda de entrada do serviço está limitada à largura de banda de um único nó. | Requer suporte BGP na infraestrutura de rede. |
Engenharia de tráfego | Controlo limitado sobre o encaminhamento de tráfego. | Controlo detalhado sobre o encaminhamento de tráfego com atributos BGP. |
Conectividade externa | Requer mais configuração para conectividade externa. | Fornece conectividade totalmente integrada com redes externas através do encaminhamento BGP. |
Passos seguintes
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários