0Pricing
DevOps Bootcamp · Урок

Типы сервисов: ClusterIP, NodePort, LoadBalancer

Изучите разные способы открытия доступа к сервисам внутри кластера Kubernetes и за его пределами.

«Типы сервисов: ClusterIP, NodePort, LoadBalancer» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Требования к открытию сервисов

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

В зависимости от того, нужен ли доступ к приложению изнутри или извне кластера и каким именно образом, Kubernetes предлагает разные типы сервисов. Давайте рассмотрим три основных!

ClusterIP: внутренний доступ

ClusterIP — это тип сервиса по умолчанию. Он предоставляет сервису стабильный внутренний IP-адрес, доступный только из Kubernetes-кластера.

  • Поды могут обращаться к другим подам через эти ClusterIPs и имя сервиса.
  • Это идеальный вариант для внутренних сервисов, которым не нужен прямой внешний доступ.
  • Представьте его как внутренний балансировщик нагрузки для ваших подов.

YAML сервиса ClusterIP

Так определяется сервис типа ClusterIP. Обратите внимание на поле type: ClusterIP, хотя его можно не указывать, поскольку это тип по умолчанию.

apiVersion: v1
kind: Service
metadata:
  name: my-internal-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

Доступ к сервисам ClusterIP

После развертывания Kubernetes автоматически назначает этому сервису уникальный внутренний IP-адрес (ClusterIP). После этого другие поды могут подключаться к нему по имени сервиса (например, my-internal-service) или по его IP-адресу.

Служба DNS Kubernetes сопоставляет имя сервиса с его ClusterIP, благодаря чему внутреннее взаимодействие становится простым и надежным.

NodePort: внешний доступ

Что делать, если к приложению нужен доступ извне кластера? Здесь пригодится NodePort.

Сервис NodePort открывает приложение на статическом порту по IP-адресу каждого узла в кластере. Любой трафик, отправленный на NodeIP:NodePort, перенаправляется к вашему сервису.

  • Подходит для разработки и небольших развертываний.
  • NodePort обычно находится в диапазоне 30000–32767.

YAML сервиса NodePort

Чтобы создать сервис NodePort, явно укажите type: NodePort. Если порт не задан, Kubernetes автоматически выберет свободный порт из диапазона NodePort.

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080 # Optional: K8s picks if omitted
  type: NodePort

Подключение через NodePort

После развертывания сервиса NodePort к приложению можно получить доступ извне кластера, используя <AnyNodeIP>:<NodePort>.

Например, если IP-адрес узла — 192.168.1.100, а назначенный NodePort — 30080, приложение будет доступно по адресу http://192.168.1.100:30080.

LoadBalancer: интеграция с облаком

В производственных средах у облачных провайдеров (AWS, GCP, Azure) часто предпочитают тип сервиса LoadBalancer. Он автоматически создает внешний облачный балансировщик нагрузки.

Этот балансировщик получает публичный IP-адрес и распределяет внешний трафик между подами вашего сервиса. Он самостоятельно выполняет всю сложную маршрутизацию.

YAML сервиса LoadBalancer

Определить сервис LoadBalancer очень просто. Ваш облачный провайдер сам выполнит основную работу по созданию внешнего балансировщика нагрузки.

apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

Внешний доступ с LoadBalancer

После развертывания облачный провайдер создаст выделенный балансировщик нагрузки и назначит ему внешний IP-адрес или имя узла. Затем вы сможете использовать эту публичную конечную точку для доступа к приложению.

Это надежный, масштабируемый и высокодоступный способ открыть сервисы для интернета.

Быстрая проверка: типы сервисов

Какие типы сервисов Kubernetes обеспечивают прямой внешний доступ к приложению из-за пределов кластера?

Итоги: выбор сервиса

Вы изучили три основных типа сервисов Kubernetes:

  • ClusterIP: только для внутреннего доступа в пределах кластера.
  • NodePort: открывает сервисы на статическом порту по IP-адресу каждого узла и обеспечивает внешний доступ.
  • LoadBalancer: интегрируется с облачными провайдерами и создает внешний балансировщик нагрузки с публичным IP-адресом.

Выбирайте подходящий тип с учетом требований приложения к внешнему доступу и среды развертывания!

Часто задаваемые вопросы

Урок «Типы сервисов: ClusterIP, NodePort, LoadBalancer» бесплатный?

Да — полный текст урока «Типы сервисов: ClusterIP, NodePort, LoadBalancer» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Типы сервисов: ClusterIP, NodePort, LoadBalancer»?

Изучите разные способы открытия доступа к сервисам внутри кластера Kubernetes и за его пределами. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Типы сервисов: ClusterIP, NodePort, LoadBalancer»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

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

Все уроки этого курса

  1. Открытие доступа к приложениям с помощью сервисов
  2. Типы сервисов: ClusterIP, NodePort, LoadBalancer
  3. Ingress для внешнего доступа
  4. DNS и обнаружение служб
← Назад к DevOps Bootcamp