Кубернетес — Сервис

Опубликовано: 18 Февраля, 2023

В Kubernetes каждому поду присваивается собственный IP-адрес, но поды эфемерны, то есть их можно легко уничтожить, и когда вместо них создается новый под, им назначается новый IP-адрес. Здесь на первый план выходит роль услуг. Служба похожа на постоянный IP-адрес, назначенный модулю. IP-адрес службы стабилен. Таким образом, вместо отправки запроса в модуль клиент отправляет запрос службе, а служба перенаправляет этот запрос в нужный модуль. Сервисы также помогают в балансировке нагрузки.

В Kubernetes в основном есть два типа сервисов:

1. Служба ClusterIP (внутренняя служба):

В этом типе службы, когда клиент делает запрос, этот запрос сначала перенаправляется на входной контроллер, а входной контроллер перенаправляет его в службу clusterIP, а затем эта служба перенаправляет его в соответствующий модуль. Когда имеется много реплик модуля, эти реплики служат конечными точками службы, и здесь служба также работает как балансировщик нагрузки и перенаправляет запросы на реплику модуля, имеющую наименьшую нагрузку. Эта служба является внутренней службой, поскольку внешний трафик не может напрямую обращаться к службе clusterIP. Доступ к нему возможен только через Ingress Controller.

Пример. Давайте создадим службу ClusterIP для веб-сервера Nginx, используя следующую конфигурацию:

Кроме того, служба ClusterIP является службой по умолчанию, если мы не указываем тип службы в файле конфигурации, как в примере выше.

Теперь мы можем создать эту службу, применив следующую команду:

$ kubectl apply -f [file-name]

2. Служба NodePort (внешняя служба)

В службе NodePort внешняя служба имеет доступ к фиксированному порту на каждом рабочем узле. В этом случае вместо входа запрос браузера будет напрямую поступать на узел через порт, указанный в файле конфигурации службы, и отображаться на порту узла. Порт узла может находиться в диапазоне от 30000 до 32767.

Пример:

Теперь мы можем создать эту службу, применив следующую команду

$ kubectl apply -f [file-name]