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


Делаю:
2025.12.21


Metal LB позволит получить внешний IP в миникубе на локалхосте. Аналогично тому, как это происходит в облаках, когда облачный сервис выделяет ip адрес, к котому можно будет подключиться извне.


$ minikube addons enable metallb -p ${PROFILE}


$ minikube --profile ${PROFILE} ip
192.168.49.2


$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.49.20-192.168.49.30
EOF


Проверка при необходимости


$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: test-loadbalancer-8080
spec:
  selector:
    app: test
  ports:
    - port: 8080      # Порт сервиса
      targetPort: 80  # Порт пода
  type: LoadBalancer
EOF


$ cat << 'EOF' | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80
EOF


// EXTERNAL-IP получен
$ kubectl get svc test-loadbalancer-8080
NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
test-loadbalancer-8080   LoadBalancer   10.96.188.65   192.168.49.20   8080:31229/TCP   13s


// OK
$ curl http://192.168.49.20:8080