Нужен ли контроллер входа и выхода - PullRequest
0 голосов
/ 13 февраля 2020

Я новичок из kubernetes ie, и сколько бы я ни читал об этом, я не могу разобраться с этой проблемой.
У меня есть простое развертывание, которое создает модуль с не очень сложным приложением.
Я знаю, что делают входной и входной контроллеры, но, насколько я понимаю, мне не требуется выставлять свое приложение pod извне.
Достаточно только службы LoadBalancer.
Мне не нужно более одного правила для маршрутизации трафика c.
Я ошибаюсь?

Ответы [ 3 ]

4 голосов
/ 13 февраля 2020

Традиционно, вы должны создать сервис LoadBalancer для каждого сервиса, который вы хотите предоставить извне. Это может стать довольно дорогим. Ingress дает вам возможность направлять запросы к сервисам на основе хоста или пути запроса, централизуя несколько сервисов в одной точке входа.

Кроме того, распределение балансировки нагрузки требует времени и работает только в поддерживаемых облачных провайдерах, таких как AWS, GCP et c.

Еще одна вещь, которую следует учитывать, - это необходимость маршрутизации на уровне L4 (TCP / UDP), поскольку входной API-интерфейс kubernetes - это в первую очередь уровень L7, но некоторые из входных контроллеров, такие как traefik, nginx поддерживает уровень L4 (TCP / UDP) наряду с маршрутизацией уровня L7 (HTTP).

Поэтому ответ на ваш вопрос зависит от вашей среды и вариантов использования.

1 голос
/ 13 февраля 2020

Вход необходим, если вы хотите выставить свой сервис внешним. Специально для уровня 7 в модели OSI (транспорт HTTP). Ingress также предоставляет механизм для включения поддержки TLS в вашем балансировщике нагрузки. Маршрутизация Traffi c контролируется правилами, определенными для ресурса Ingress. Вход может быть настроен на предоставление службам внешних URL-адресов, трафик баланса нагрузки c, прекращение SSL / TLS и предложение виртуального хостинга на основе имени. Контроллер Ingress отвечает за выполнение Ingress, обычно с балансировщиком нагрузки, хотя он также может настраивать ваш граничный маршрутизатор или дополнительные интерфейсы для помощи в обработке трафика c.

По умолчанию контроллер Ingress зависит от того, какой тип облачного провайдера, которого вы используете, или если вы используете локально, вам нужно будет настроить его в зависимости от того, что вам нужно. В одном кластере вы также можете создать несколько контроллеров Ingress. Существует много видов контроллеров Ingress, вы можете посмотреть на эту статью .

Я думаю, эта статья о балансировке нагрузки и входе также может помочь.

1 голос
/ 13 февраля 2020

Ingress и IngressControllers используются для маршрутизации трафика c на уровне 7, т. Е. Если ваши бэкэнды используют протоколы L7, такие как HTTP, GRP C et c. Вы можете направлять запросы на основе пути запроса к различным внутренним службам, используя Ingress.

  • Если ваше приложение не работает на уровне 7, вам может не потребоваться Ingress.

  • Еще один вопрос, который вы могли бы задать себе, если вы переносите свое приложение из не-kubernetes-среды в kuberneters - вы уже используете обратный прокси-сервер, такой как nginx? Если это так, вы можете захотеть использовать Ingress. Я говорю может , потому что в этом нет необходимости. Вы можете добиться того же эффекта от использования Ingress, запустив контейнер nginx в качестве модуля, написав nginx .conf самостоятельно и сделав его доступным извне (например, с помощью службы LoadBalancer). Вместо этого, используя IngressController, вам не нужно поддерживать модуль nginx или писать nginx .conf. Вместо этого вы можете express использовать ту же конфигурацию, что и ресурс Ingress, что намного проще.

...