Данная инструкция описывает как настроить баллансировщик для Kubernetes Cluster созданного c помощью расширения Cloud Director Container Service Extension
MetalLB подключается к вашему кластеру Kubernetes и обеспечивает реализацию балансировщика сетевой нагрузки. Проще говоря, он позволяет создавать Kubernetes-сервисы типа «LoadBalancer» в кластерах которые созданы на базе CSE. Для получения дополнительной информации см. здесь
Для добавления в кластер Metallb нам нужно применить манифест
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml
Вывод будет примерно следующий
Установка MetallB завершена, далее нам нужно создать файл конфигурации и настроить его для нашей сети.
Добавим следующую конфигурацию в кластер
cat <<EOF | kubectl apply -f -
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 192.168.2.240-192.168.2.250
EOF
В строке addresses указываем подсеть которая с маршрутизирована на ваш EDGE По умолчанию это сеть 192.168.2.0/24 и указываем диапазон адресов которые будет выдавать Load Balancer
Так же нужно разрешить анонс данных адресов
Для этого нужно применить следующую конфигурацию
cat <<EOF | kubectl apply -f -
apiVersion: metallb.io/v1beta1
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
EOF
Для того чтобы убедиться что мы правильно настроили наш балласнсер создадим простенький deployment hello world и сделаем для него сервис
kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml
И создадим для него service тип LoadBalancer следующей командой
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
После чего выполним команду kubectl get services my-service
и увидим в столбце External IP адрес из диапазона MetallB который мы описывали в файле config.yaml
Для проверки что сервис успешно работает можем выполнить curl http://external_IP:8080
Но нужно понимать, что данный сервис будет находится за NAT и для него нужно будет сделать DNAT правило вашего внешнего адреса на адрес MetallB (который указан в столбце external-ip) в настройках EDGE
Подробнее в данной инструкции https://client.cloud4y.ru/index.php/knowledgebase/103/--------.html