Насколько я понимаю,
Metallb — это балансировщик нагрузки, который назначает IP-адрес службе, которая может быть открыта для внешнего мира.
Nginx Ingress — это такой же обычный nginx, но он находится в Kubernetes и обеспечивает маршрутизацию по разным маршрутам.
Мой вопрос: зачем мне Metallb, если у меня есть Nginx Ingress? Потому что nginx Ingress откроет порт 80/443 для общего доступа, и я смогу просто использовать его для маршрутизации к нужным мне сервисам.
Спасибо.
решение1
Вам понадобятся оба варианта, поскольку они решают разные задачи:
MetalLB получает запросы извне кластера и распределяет их по балансировщикам нагрузки в кластере.
Nginx получает запросы извне кластера и распределяет их по узлам.
Видетьhttps://kubernetes.github.io/ingress-nginx/deploy/baremetal/#a-pure-software-solution-metallbдля получения подробной информации.
Без MetalLB служба входящего трафика nginx на bare metal остается в pending
состоянии, поскольку ей не назначен IP-адрес. MetalLB назначает nginx внешний IP-адрес.
Без Nginx вам придется выполнять TLS-терминацию на каждом клиенте, что, как правило, не рекомендуется.
Другой способ взглянуть на это:
- nginx ingress обрабатывает тип
Ingress
- metallb обрабатывает тип
LoadBalancer
Путаница, вероятно, возникает из-за того, что, хотя описанные выше операции принципиально различны, они часто выполняются «балансировщиком нагрузки».
Обратите внимание, что то же самое применимо и к облаку: вам необходимо развернуть Ingress для обработки терминации TLS и других операций, а поставщик автоматически создает балансировщик нагрузки в своей инфраструктуре.