Портер
Английский | 中文
Портер — это балансировщик нагрузки с открытым исходным кодом, предназначенный для кластеров Kubernetes на «голом железе». Он реализован физическим коммутатором и использует BGP и ECMP для достижения наилучшей производительности и высокой доступности.
Как известно, в облачных кластерах Kubernetes поставщики облачных услуг (AWS, GCP, Azure и т. д.) обычно предоставляют балансировщики нагрузки для назначения IP-адресов и предоставления доступа к сервису извне.
Однако в кластере на «голом железе» сложно предоставить доступ к сервису, поскольку Kubernetes не предоставляет решение балансировщика нагрузки для среды «голого железа». К счастью, Портер позволяет создавать сервисы Kubernetes типа «LoadBalancer» в кластерах на «голом железе», что обеспечивает согласованность работы с облаком.
На следующем рисунке показан принцип работы Портера. Предположим, что есть распределённый сервис, развёрнутый на узле 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, который автоматически обновляет информацию о маршрутизации, наблюдая за изменениями сервиса.
Подробнее см. в разделе «Как собрать проект Портера».
Очевидно, что Портер похож на MetalLB, оба являются прокси-серверами сервисов и предназначены для кластеров Kubernetes на «голом железе».
Поддержка большинства функций BGP и нескольких сетевых архитектур.
Удобный инструмент на основе Kubernetes CRD-Controller. Портер может полностью контролироваться kubectl.
Конфигурационный файл можно динамически обновлять без перезагрузки. Конфигурации BGP автоматически обновляются в зависимости от сетевой среды. Можно динамически использовать различные функции BGP.
Поддерживаются пассивный режим и DNAT.
Более дружественное разрешение конфликтов с Calico.
Портер — перспективный новичок среди сервисных прокси, который обогащает ландшафт CNCF CLOUD NATIVE для наблюдаемости и анализа.
Портер лицензирован по версии 2.0 лицензии Apache. Полный текст лицензии см. в файле LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )