Kubernetes — служба NodePort

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

Предварительное условие: Kubernetes

В Kubernetes существует 3 типа сервисов для обеспечения обнаружения и маршрутизации между модулями.

1. ClusterIP: это служба по умолчанию, и ее видимость является внутренней для кластера, что означает, что невозможно использовать службу clusterIP для доступа к микрослужбе из Интернета из-за пределов кластера.

2. NodePort: NodePort расширяет службу ClusterIP, и его видимость является внутренней и внешней по отношению к кластеру. Вы можете установить NodePort с помощью свойства NodePort , это порт, который служба будет прослушивать из-за пределов кластера. Существует одно требование использования NodePort: узлы должны иметь общедоступные IP-адреса. Порт должен находиться в диапазоне от 30000 до 32767, и если вы не укажете значение NodePort, Kubernetes назначит его случайным образом.

3. LoadBalancer: он работает на транспортном уровне (TCP), то есть на уровне 4. Это означает, что он не может принимать решения на основе содержимого и использует простой алгоритм, такой как циклический перебор по выбранным путям. Принимая во внимание, что Ingress работает на уровне приложения, то есть на уровне 7. Он может принимать решения на основе фактического содержания каждого сообщения. Более интеллектуальные решения по балансировке нагрузки и оптимизации контента. Другими словами, Ingress похож на LoadBalancer , но более интеллектуален.

В нашей статье мы будем использовать службу NodePort для обнаружения служб.

Реализация:

Шаг 1. Создайте развертывание. Для нашей демонстрации я выбрал Nginx в качестве нашего приложения с 2 репликами, вы можете изменить его в соответствии с вашими требованиями.

$ kubectl create deploy 
--image=nginx:1.23 nginx 
--replicas=2

Шаг 2. Откройте сервис с помощью NodePort

kubectl expose deploy nginx 
--type=NodePort --port=8080 
-target-port=80

мы представили наше развертывание как службу NodePort с именем nginx-service

Проверьте свой сервис (необязательно):

$ kubectl get svc nginx
-service -o wide

Вы можете видеть, что мы успешно представили наш сервис с помощью NodePort .

Шаг 3. Получите доступ к вашему приложению

$ minikube service 
nginx-service --url

При вызове этого вы можете увидеть его в браузере:

Как вы можете видеть на изображении выше, мы можем получить доступ к нашему приложению на нашей машине, которая работает в нашем кластере, это возможно только благодаря службе NodePort .