1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kubesphere-openelb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Портер

Английский | 中文

Что такое Портер

Портер — это балансировщик нагрузки с открытым исходным кодом, предназначенный для кластеров Kubernetes на «голом железе». Он реализован физическим коммутатором и использует BGP и ECMP для достижения наилучшей производительности и высокой доступности.

Зачем нужен Портер

Как известно, в облачных кластерах Kubernetes поставщики облачных услуг (AWS, GCP, Azure и т. д.) обычно предоставляют балансировщики нагрузки для назначения IP-адресов и предоставления доступа к сервису извне.

Однако в кластере на «голом железе» сложно предоставить доступ к сервису, поскольку Kubernetes не предоставляет решение балансировщика нагрузки для среды «голого железа». К счастью, Портер позволяет создавать сервисы Kubernetes типа «LoadBalancer» в кластерах на «голом железе», что обеспечивает согласованность работы с облаком.

Основные функции

  • Балансировка нагрузки маршрутизации ECMP;
  • Динамическая конфигурация маршрутизации BGP;
  • Управление VIP;
  • Назначение LoadBalancerIP в сервисах Kubernetes;
  • Установка с помощью Helm Chart;
  • Динамическая настройка сервера BGP через CRD;
  • Динамическая настройка однорангового узла BGP через CRD.

Принцип работы

На следующем рисунке показан принцип работы Портера. Предположим, что есть распределённый сервис, развёрнутый на узле 1 (192.168.0.2) и узле 2 (192.168.0.6). Сервис должен быть доступен через EIP 1.1.1.1. После развёртывания примера сервиса Портер автоматически синхронизирует информацию о маршрутизации с листовым коммутатором, а затем синхронизируется с пограничным и магистральным коммутаторами, таким образом внешние пользователи могут получить доступ к сервису через EIP 1.1.1.1.

Архитектура развёртывания

Портер служит плагином балансировщика нагрузки, отслеживая изменения сервиса в кластере через Manager и рекламируя связанные маршруты. В то же время все узлы в кластере развёрнуты с агентом. Каждый раз, когда используется EIP, на хост добавляется правило маршрутизации хоста, направляющее IP-пакеты, отправленные на EIP, локально.

Компоненты

У Портера есть два компонента:

  • Контроллер LB & Агент: Контроллер отвечает за синхронизацию маршрутов BGP с физическим коммутатором; Агент развёртывается на каждом узле как DaemonSet для поддержания правил дренажа;

  • Служба EIP, включая управление пулом EIP и контроллер EIP, контроллер отвечает за динамическое обновление информации EIP службы.

Логика работы

Когда Портер развёрнут как сервис в кластере Kubernetes, он устанавливает соединение BGP с пограничным маршрутизатором кластера (коммутатор уровня 3). Когда в кластере создан сервис с определённой аннотацией (например, lb.kubesphere.io/v1apha1: porter), сервису динамически назначается EIP (пользователи также могут указать EIP самостоятельно). Контроллер LB создаёт маршрут и направляет маршрут в общедоступную сеть (или частную сеть) через BGP, чтобы к сервису можно было получить внешний доступ.

Контроллер LB Портера — это пользовательский контроллер, основанный на среде выполнения контроллера Kubernetes, который автоматически обновляет информацию о маршрутизации, наблюдая за изменениями сервиса.

Установка

  1. Helm-диаграмма Портера: Разверните Портер в кластере Kubernetes (рекомендуется);
  2. Разверните Портер в кластере Kubernetes на «голом железе»;
  3. Протестируйте Портер на облачной платформе с имитированным маршрутизатором.

Сборка

Подробнее см. в разделе «Как собрать проект Портера».

Сравнение с MetalLB

Очевидно, что Портер похож на MetalLB, оба являются прокси-серверами сервисов и предназначены для кластеров Kubernetes на «голом железе».

Преимущества

  • Поддержка большинства функций BGP и нескольких сетевых архитектур.

  • Удобный инструмент на основе Kubernetes CRD-Controller. Портер может полностью контролироваться kubectl.

  • Конфигурационный файл можно динамически обновлять без перезагрузки. Конфигурации BGP автоматически обновляются в зависимости от сетевой среды. Можно динамически использовать различные функции BGP.

  • Поддерживаются пассивный режим и DNAT.

  • Более дружественное разрешение конфликтов с Calico.

Недостатки:

  • Поддержка только Linux.

Документация:

  • Документация Портера (англ.) — doc.
  • Документация Портера (кит.) — doc/zh.

Портер — перспективный новичок среди сервисных прокси, который обогащает ландшафт CNCF CLOUD NATIVE для наблюдаемости и анализа.

Лицензия:

Портер лицензирован по версии 2.0 лицензии Apache. Полный текст лицензии см. в файле LICENSE.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

OpenELB — это балансировщик нагрузки, который подходит для развёртывания Kubernetes на физических серверах. Этот балансировщик использует физические коммутаторы и применяет BGP и ECMP для достижения оптимальной производительности и высокой доступности. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kubesphere-openelb.git
git@api.gitlife.ru:oschina-mirror/kubesphere-openelb.git
oschina-mirror
kubesphere-openelb
kubesphere-openelb
master