Sobes.tech
Back to questions
Junior
579
questionbank

Что такое NodePort и для чего он используется?

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

NodePort — это тип Service в Kubernetes, который открывает фиксированный порт на каждом узле кластера. Через этот порт можно попасть на сервис извне кластера, даже без отдельного внешнего балансировщика. Обычно это простой способ быстро сделать приложение доступным снаружи.

Определение:

NodePort — это механизм публикации сервиса Kubernetes наружу через порт на каждом worker-узле. Kubernetes пробрасывает трафик, пришедший на NodeIP:NodePort, к выбранным Pod’ам через Service. Диапазон порта обычно выделяется Kubernetes автоматически, но его можно указать вручную в допустимых пределах.

Пример использования:

Например, есть веб-приложение в кластере, и к нему нужно получить доступ с локальной сети без облачного load balancer. Создают Service типа NodePort, после чего приложение становится доступно по адресу любого узла кластера и назначенному порту.

apiVersion: v1
kind: Service
metadata:
  name: web-app
spec:
  type: NodePort
  selector:
    app: web-app
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30080

Пояснение кода:

Код показывает Service, который ищет Pod’ы с меткой app: web-app. Внутри кластера сервис слушает port: 80 и пересылает запросы на targetPort: 8080 в контейнере. Снаружи приложение будет доступно через NodeIP:30080 на любом узле кластера.

Ключевые моменты:

  • NodePort открывает порт на каждом узле Kubernetes-кластера.
  • Подходит для простого внешнего доступа без отдельного внешнего балансировщика.
  • Трафик с NodeIP:NodePort перенаправляется на Service, а затем на Pod’ы.
  • Обычно используется для тестов, учебных стендов и простых on-prem-сценариев.
  • Для production чаще выбирают Ingress или LoadBalancer, если они доступны.