Добавление баллансировщика сетевой нагрузки

Данная инструкция описывает как настроить баллансировщик для 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

  • 93 Пользователи нашли это полезным
Помог ли вам данный ответ?

Связанные статьи

Подготовка к использованию, установка клиента

Для того, чтобы мы могли создавать/редактировать/использовать Kubernets в vCloud Director нужно...

Управление нодой NFS и создание PV

Основные преимущества использования NFS в Kubernetes   Использовать существующее хранилище, вы...

Создание кластера Kubernetes через vCloud Director

Для создания кластера нужно войти в личный tenant с пользователем который обладает правами...