Установка MetalLB

По умолчанию Kubernetes в локальной среде (minikube, kind, kubeadm и т.п.) не предоставляет реализацию LoadBalancer для сервисов. Чтобы протестировать балансировку и работу сервисов так, как это происходит в облачных кластерах, используется MetalLB — лёгкий балансировщик нагрузки для bare-metal и локальных кластеров.

Устанавливаем MetalLB

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

Проверяем успешный запуск:

kubectl get pods -n metallb-system

Создаём конфигурацию

Создаём файл metallb-config.yaml со следующим содержимым:

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: default-pool
  namespace: metallb-system
spec:
  addresses:
    - 192.168.1.240-192.168.1.250  # Указываем пул адресов
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2-advertisement
  namespace: metallb-system

IPAddressPool — это список IP-адресов, которые MetalLB может выдавать сервисам типа LoadBalancer.
L2Advertisement — это объект MetalLB, который указывает, какие IP-адреса из заданного пула должны быть объявлены в локальной сети на канальном уровне (L2). Благодаря этому остальные устройства в сети понимают, что данные IP принадлежат узлам кластера Kubernetes, и могут направлять на них трафик.

Применяем манифест

kubectl apply -f metallb-config.yaml
Прокрутить вверх