Какой внешний балансировщик нагрузки, осведомленный о k8s-ingress, можно использовать для нескольких кластеров Kubernetes?

Я ищу балансировщик нагрузки, обладающий следующими характеристиками:  
1. Интеграция с Kubernetes-кластером, позволяющая анализировать kube-api для получения информации о ресурсах ingress и соответствующих бэкендах (подах), а также динамически формировать пул бэкенд-серверов для балансировки на основе этой информации.  
2. Поддержка нескольких Kubernetes-кластеров.  
3. Возможность работы вне Kubernetes, с установкой на обычном Linux-сервере.  
4. Бесплатное решение с открытым исходным кодом.  

Я уже протестировал:  
1. HAProxy Kubernetes Ingress Controller External mode on-premises - <a href="https://www.haproxy.com/documentation/kubernetes-ingress/community/installation/external-mode-on-premises/" rel="nofollow">https://www.haproxy.com/documentation/kubernetes-i...</a> - поддерживает только один кластер.  
2. Traefik Proxy - Ingress Provider - <a href="https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/" rel="nofollow">https://doc.traefik.io/traefik/routing/providers/k...</a> - также поддерживает только один кластер.
  • 6 ноября 2024 г. 11:43
Ответы на вопрос 2
Вы можете рассмотреть следующие решения для балансировки нагрузки, которые соответствуют вашим критериям:

### 1. **Kong**
- **Описание**: Kong - это популярный API Gateway, который можно использовать как балансировщик нагрузки, интегрируясь при этом с Kubernetes. Он поддерживает мультикластерные настройки через специальные конфигурации.
- **Интеграция с Kubernetes**: Kong может взаимодействовать с kube-api для получения информации о ресурсах ingress и соответствующих бэкендах.
- **Работа вне Kubernetes**: Kong можно установить на обычном Linux-сервере.
- **Лицензия**: Kong Community Edition — это решение с открытым исходным кодом, которое можно использовать бесплатно.

### 2. **NGINX Ingress Controller**
- **Описание**: Хотя NGINX часто используется в рамках одного кластера, вы можете настроить его в другом режиме, чтобы он работал как внешний балансировщик нагрузки для нескольких кластеров.
- **Интеграция с Kubernetes**: Вы можете настроить конфигурацию NGINX так, чтобы он собирал информацию из нескольких кластеров, например, через API Kubernetes или консоль Kubernetes.
- **Работа вне Kubernetes**: NGINX может быть установлен на обычном Linux-сервере.
- **Лицензия**: Открытый исходный код.

### 3. **Kubernetes External DNS и MetalLB**
- **Описание**: Вы можете использовать MetalLB в сочетании с Kubernetes External DNS, чтобы настроить балансировку нагрузки для нескольких кластеров. Это требует немного больше настройки, но это решение может быть выполнено бесплатно с открытым исходным кодом.
- **Интеграция с Kubernetes**: MetalLB может интегрироваться с Kubernetes для управления балансировкой нагрузки.
- **Работа вне Kubernetes**: MetalLB можно настроить на работе вне k8s, если правильно настроить мета-данные.
- **Лицензия**: Открытый исходный код.

### 4. **Citrix ADC (Netscaler)**
- **Описание**: Citrix также предлагает открытую версию ADC, которая может быть настроена для работы с несколькими кластерами Kubernetes. Однако вам может потребоваться отдельная настройка.
- **Интеграция с Kubernetes**: Citrix ADC поддерживает динамическую интеграцию с кластером и может быть настроен для работы вне k8s.
- **Лицензия**: Есть бесплатная версия с ограниченной функциональностью.

### Замечания
Используйте вышеописанные решения с учетом инфраструктуры вашего приложения и требований к масштабируемости. Наличие интеграции с Kubernetes-кластерами может потребовать некоторого дополнительного времени на настройку.
Не пользовался, но советую проверить service mech - Istio or Linkerd.
Похожие вопросы