Etapa 4 – Instalar MetalLB para LoadBalancer com IPs Fixos Estimated reading: 2 minutes 77 views O que é o MetalLB? O MetalLB é um load balancer para clusters Kubernetes bare-metal, que atribui IPs fixos aos serviços do tipo LoadBalancer. Isso é essencial para expor o Ingress Controller, ArgoCD, Prometheus, etc., fora do cluster. 🔧 5.1 – Pré-requisitos Rede local com um range de IPs livres, por exemplo: 192.168.1.70-192.168.1.99 Esses IPs não devem estar em uso por nenhum host físico ou DHCP 📥 5.2 – Instalar MetalLB kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml Aguarde os pods ficarem prontos: kubectl get pods -n metallb-system 📦 5.3 – Configurar um Pool de IPs fixos Crie o arquivo metallb-config.yaml: apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: pool-local namespace: metallb-system spec: addresses: - 192.168.100.240-192.168.100.250 --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: advert-local namespace: metallb-system spec: ipAddressPools: - pool-local Aplica: kubectl apply -f metallb-config.yaml 🧪 5.4 – Teste com um Serviço LoadBalancer Exemplo de serviço exposto com IP fixo via MetalLB: apiVersion: v1 kind: Service metadata: name: nginx-lb namespace: default spec: selector: app: nginx type: LoadBalancer ports: - protocol: TCP port: 80 targetPort: 80 Crie um deployment de exemplo: kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=LoadBalancer Verifique o IP externo: kubectl get svc Você verá algo como: nginx-lb LoadBalancer 10.0.0.100 192.168.100.240 80:xxxxx/TCP 1m O IP 192.168.100.240 foi atribuído pelo MetalLB, e agora você pode acessá-lo externamente na rede local. 🧩 5.5 – Usar MetalLB com Ingress-NGINX Edite o Service do Ingress Controller para ser do tipo LoadBalancer: kubectl edit svc ingress-nginx-controller -n ingress-nginx Modifique o tipo de ClusterIP para LoadBalancer: spec: type: LoadBalancer Caso não funcione, aplique a configuração abaixo:Se você estiver usando o kube-proxy no modo IPVS, desde o Kubernetes v1.14.2, você deve habilitar o modo strict ARP. Você não precisa disso se estiver usando o kube-router como service-proxy, pois ele habilita o strict ARP por padrão. Você pode conseguir isso editando a configuração do kube-proxy no cluster atual: kubectl edit configmap -n kube-system kube-proxy Existem dois parâmetros que, geralmente, serão definidos da seguinte forma: mode: "" strictARP: false Eles devem ser alterados para: mode: "ipvs" strictARP: true Após alguns segundos, ele receberá um IP do pool configurado. 🖥️ Resultado esperado Você poderá acessar qualquer serviço exposto como LoadBalancer com IP fixo, ideal para ambientes bare-metal/on-premises.