3 основных метода доступа к внутреннему сервису kubernetes: NodePort , LoadBalancer и Ingress .
. Вы можетео некоторых основных различиях между ними читайте здесь https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0
NodePort
Отображение произвольно или вручную выбранного высокого порта из определенного диапазона в службу от 1 до 1.
Либо разрешите kubernetes случайным образом выбрать высокий порт, либо вручную определите высокий порт из предварительно определенного диапазона, который по умолчанию составляет 30000–32767 (но его можно изменить), и сопоставьте его с внутренним сервисным портом наот 1 до 1.
Предупреждение. Хотя можно вручную определить номер порта NodePort для каждой службы, обычно это не рекомендуется из-за возможных проблем, таких как конфликты портов.Поэтому в большинстве случаев вы должны позволить кластеру случайным образом выбрать номер порта NodePort для вас.
Из официальных документов: https://kubernetes.io/docs/concepts/services-networking/service/#nodeport
Если вы установите поле типа в NodePort,мастер Kubernetes выделит порт из диапазона, указанного в флаге --service-node-port-range (по умолчанию: 30000-32767), и каждый узел будет проксировать этот порт (тот же номер порта на каждом узле) в вашей службе.
LoadBalancer
Присоединение службы к внешнему IP-провайдеру, предоставляемому службой IP-провайдера, такой как облачная служба Public IP Service.
Функциональностьэтот тип сервиса зависит от внешних драйверов / плагинов.Большинство современных облаков предлагают поддержку для предоставления общедоступных IP-адресов для определений LoadBalancer.Но если вы вращаете пользовательский кластер без средств для назначения общедоступных IP-адресов (например, с помощью Rancher без плагинов для провайдеров IP-адресов), лучшее, что вы можете сделать с этим, - это назначить IP-адрес хост-машины одной службе.
Из официальных документов: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
В облачных провайдерах, которые поддерживают внешние балансировщики нагрузки, установка поля типа в LoadBalancer обеспечит балансировщик нагрузки для вашей службы.Фактическое создание балансировщика нагрузки происходит асинхронно, и информация о подготовленном балансировщике будет опубликована в поле службы .status.loadBalancer.
Вход
Запустить централизованное управлениеслужба приложения-маршрутизатора, которая получает весь трафик через определенный порт (или порты) и направляет его в службы на основе параметров, таких как запрашиваемый домен и путь.
Чтобы установить его, необходимо создать службу-маршрутизатор приложения (например, nginx).), который работает в вашем кластере и анализирует каждый новый созданный ресурс типа Ingress.Затем вы создаете ресурс Ingress, который определяет правила маршрутизации, которые вы хотели бы, например, какой DNS-запрос прослушивать и какой службе пересылать запрос.
Хотя для этой цели существует несколько решений, я рекомендую Nginx Ingress
https://github.com/helm/charts/tree/master/stable/nginx-ingress https://github.com/kubernetes/ingress-nginx
Официальные документы:
Что такое Ingress?Как правило, сервисы и модули имеют IP-адреса, маршрутизируемые только сетью кластера.Весь трафик, который заканчивается на пограничном маршрутизаторе, либо отбрасывается, либо перенаправляется в другое место.Концептуально это может выглядеть так:
internet
| ------------ [ Services ] An Ingress is a collection of rules that allow inbound connections to reach the cluster services.
internet
| [ Ingress ] --|-----|-- [ Services ] It can be configured to give services externally-reachable URLs, load balance
трафик, прекращение SSL, виртуальный хостинг на основе имени и многое другое.Пользователи запрашивают вход, размещая ресурс Ingress на сервере API.Контроллер Ingress отвечает за выполнение Ingress, как правило, с помощью балансировщика нагрузки, хотя он также может настраивать ваш пограничный маршрутизатор или дополнительные интерфейсы, чтобы помочь обработать трафик способом HA.