Кубернетес — Сервис
В 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]