logotype

Etapa 4 – Instalar MetalLB para LoadBalancer com IPs Fixos

Leitura estimada: 2 minutos 13 views Colaboradores

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.

Compartilhe este documento

Etapa 4 – Instalar MetalLB para LoadBalancer com IPs Fixos

Ou copiar link

    CONTEÚDO