Descubra como o MetalLB aprimora o balanceamento de carga em ambientes Kubernetes on-premises

Descubra como o MetalLB aprimora o balanceamento de carga em ambientes Kubernetes on-premises

Por que usar o MetalLB em um ambiente on-premises?

O MetalLB é uma solução essencial para clusters Kubernetes que não estão sendo executados em um ambiente de nuvem. Em ambientes de nuvem pública (como AWS, Azure, GCP) quando você cria um serviço do tipo LoadBalancer, a infraestrutura de nuvem fornece o balanceador de carga necessário. No entanto, em uma nuvem privada ou ambiente on-premises, as implementações de balanceadores de carga de rede estão ausentes. É aqui que o MetalLB entra em ação.

Sem o MetalLB ou uma solução similar, o IP externo de qualquer serviço recém-criado no Kubernetes permanecerá indefinidamente em estado pendente. O MetalLB oferece uma implementação de balanceador de carga de rede que se integra com equipamentos de rede padrão, fazendo com que os serviços externos em clusters bare-metal funcionem de maneira semelhante aos seus equivalentes em provedores de plataforma IaaS1.

Mudança para IPAddressPool e L2Advertisement

Na versão mais recente do MetalLB, a configuração mudou de usar ConfigMaps para definir pools de endereços IP para usar os recursos IPAddressPool e L2Advertisement. Aqui estão as razões e detalhes por trás dessa mudança:

  • IPAddressPool: Este novo tipo de recurso substituiu a antiga maneira de provisionar a configuração do pool de endereços com ConfigMap. Ele permite definir um pool de endereços IP, que o MetalLB pode usar para atribuir endereços IP externos aos serviços1;
  • L2Advertisement: Este é um novo tipo de recurso que permite anunciar os endereços IP do pool em camada 2. Ele trabalha em conjunto com o IPAddressPool para fornecer uma configuração mais flexível e robusta1;
  • Flexibilidade e Isolamento: Com esses novos recursos, o MetalLB oferece a flexibilidade de atribuir pools de endereços a pares BGP específicos, efetivamente a um subconjunto de nós na rede. Isso permite configurações mais complexas, como a facilitação do isolamento de nós ou a segmentação da rede2;
  • Suporte a Protocolos: O MetalLB agora suporta anunciar usando L2 e BGP para o mesmo conjunto de endereços IP, fornecendo tolerância a falhas para o endereço IP externo e balanceamento de carga2.

Essas mudanças tornam o MetalLB mais flexível e poderoso, permitindo uma configuração mais refinada e eficiente para atender às necessidades específicas do seu ambiente.

Pré-requisitos

Antes de começar, certifique-se de que seu ambiente Kubernetes esteja configurado corretamente e que todas as dependências estejam instaladas. Se você estiver usando o kube-proxy no modo IPVS, a partir do Kubernetes v1.14.2 você precisa habilitar o modo ARP estrito. Para fazer isso, você pode editar a configuração do kube-proxy no seu cluster atual. A configuração necessária é:

Observe que você não precisa disso se estiver usando o kube-router como proxy de serviço, porque ele habilita o ARP estrito por padrão.

Para editar configuração do kube-proxy no cluster, execute o comando abaixo:

kubectl edit configmap -n kube-system kube-proxy

Procure o Kind KubeProxyConfiguration e defina a seguinte configuração:

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

mode: “ipvs”

ipvs:

strictARP: true

Instalação do MetalLB

O MetalLB pode ser instalado aplicando o manifesto apropriado. Aqui está o comando para instalar o MetalLB:

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.10/config/manifests/metallb-native.yaml

Este comando irá instalar o MetalLB em seu cluster, no namespace metallb-system.

Configuração do MetalLB

O MetalLB permanecerá inativo até ser configurado. Para configurar o MetalLB, você precisa definir os IPs que serão atribuídos aos serviços do Load Balancer. Aqui está um exemplo de como fazer isso:

apiVersion: metallb.io/v1beta1

kind: IPAddressPool

metadata:

name: first-pool

namespace: metallb-system

spec:

addresses:

– 172.16.1.201-172.16.1.250

apiVersion: metallb.io/v1beta1

kind: L2Advertisement

metadata:

name: advertisement

namespace: metallb-system

spec:

ipAddressPools:

– first-pool

Substitua o intervalo de endereços IP no exemplo acima pelo intervalo de endereços IP que você deseja usar em seu ambiente.

Estes são os passos básicos para instalar e configurar o MetalLB em um ambiente on-premises. Lembre-se de que pode haver outras configurações que você pode querer ajustar de acordo com as necessidades específicas de seu ambiente.

 

 

Anterior Descubra o poder do comando sed para manipulação de texto no Linux
Próxima Guia completo: Implantação de MongoDB resiliente no Google Kubernetes Engine

About author

Você pode gostar também

Infraestrutura TI

Descubra as vantagens do Linux e como migrar facilmente para ele

O Linux é um sistema operacional que tem ganhado popularidade entre usuários comuns, principalmente por ser gratuito e de código aberto. Mas o que exatamente o Linux pode oferecer para

Containers

Criando um Container do Docker (Sem o Docker!)

Aprenda na prática como o Docker gerencia seus containers. O intuito deste post é mostrar, na prática como o Docker gerencia seus containers. E qual jeito seria melhor de demonstrar o

DevOps

Guia prático: Acelere o Time To Market com DevOps e Vagrant

Conheça como criar máquinas virtuais com o Vagrant e crie ambientes padronizados iniciando pelo de Desenvolvimento. DevOps tem como objetivo diminuir o Time To Market de um serviço, ou seja,