Metallb против Nginx Ingress в Kubernetes

Metallb против Nginx Ingress в Kubernetes

Насколько я понимаю,

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 и других операций, а поставщик автоматически создает балансировщик нагрузки в своей инфраструктуре.

Связанный контент