Инсталляция Metal LB


Делаю:
2025.12.17


Вариант 2: Не заработал (не стал на хосте менять routes)


Если kubeproxy запущен без strictARP: true. Исправим это, отредактировав соответствующий configmap:


$ kubectl edit configmap -n kube-system kube-proxy


apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: 'ipvs'
ipvs:
  strictARP: true


Установка Metal LB

$ LATEST_VERSION=$(curl --silent "https://api.github.com/repos/metallb/metallb/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')

// v0.15.3
$ echo ${LATEST_VERSION}



// Установка metal-lb
$ kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/${LATEST_VERSION}/config/manifests/metallb-native.yaml


Minikube

$ minikube --profile ${PROFILE} ip
192.168.49.2


Задаем диапазон ip адресов, которые можно выдать виртуальному сервису. Нужно, чтобы он был в той же подсети, что и ip minikube.


$ cat << 'EOF' | kubectl apply -f -
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.49.20-192.168.49.30
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: base
  namespace: metallb-system
spec:
  ipAddressPools:
  - first-pool
EOF


Проверка из minikube

$ minikube ssh -p ${PROFILE}


// OK
// MetalLB работает правильно внутри minikube!
$ docker@marley-minikube:~$ curl http://192.168.49.21:8080


С хост машины не заработал. Нужно route прописать в таблице маршрутизации.


// Не проверил
$ sudo ip route add 192.168.49.0/24 via $(minikube ip -p ${PROFILE})