Данная инструкция описывает как настроить баллансировщик для 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/namespace.yaml
Данный манифеcт создаcт namespace c именем metallb-system. Cледующий добавит остальную нужную конфигурацию для metallb
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml
Вывод будет примерно следующий
Важный момент, нужно создать secrtekey для metallb иначе он работать не будет. Делается это следующей командой:
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
Установка MetallB завершена, далее нам нужно создать файл конфигурации и настроить его для нашей сети.
Добавим следующую конфигурацию в кластер
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.2.220-192.168.2.240
EOF
В строке addresses указываем подсеть которая с маршрутизирована на ваш EDGE По умолчанию это сеть 192.168.2.0/24 и указываем диапазон адресов которые будет выдавать Load Balancer
Для того чтобы убедиться что мы правильно настроили наш балласнсер создадим простенький 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