Kubernetes имеет как Ingress (перед службой), так и Service с типом: LoadBalancer .Похоже, что они делают идентичные вещи: разрешают публичный трафик в модули, соответствующие селектору службы.Каковы преимущества и недостатки каждого?В каких случаях я бы выбрал одно из другого?
Предположим, что AWS, GCP или Azure - это место, где находится ваша инфраструктура
Вход:
Работает только в том случае, еслиу вас есть входной контроллер, такой как nginx-ingress-controller, traefik, ...
Многие службы могут использовать один и тот же вход
На основе именивиртуальный хостинг
маршрутизация на основе пути
Требуется только один AWS ELB (или балансировщик нагрузки GCP для Google Cloud)
Рекомендовать следовать этому подходу для большинства случаев использования
serviceType LoadBalancer:
каждая услуга создаст отдельный AWS ELB (неэффективность затрат, будет очень дорого, если у вас будет все больше и больше услуг позже)
Может быть полезно, если вы хотите убедитьсямаксимальная безопасность / рабочая нагрузка (1 ELB на услугу)
Входные данные могут использоваться для предоставления многих служб в зависимости от пути или даже нескольких приложений в зависимости от хоста или домена в запросе.
Балансировщик нагрузки всегда предоставляет только одну службу.