Что такое NodePort в Kubernetes?

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


Как работает NodePort

  • Kubernetes открывает порт (30000–32767) на каждом узле кластера.
  • Запросы на <NodeIP>:<NodePort> перенаправляются в сервис, а затем в поды.
  • В основе всё равно используется ClusterIP, но с добавлением внешней точки входа.

Таким образом, приложение доступно по адресу:

http://<any-node-ip>:<node-port>

Example: NodePort Service

apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30080
  • port → порт внутри кластера (80).
  • targetPort → порт в контейнере (8080).
  • nodePort → внешний порт на узлах (30080).

Плюсы и минусы

✅ Плюсы

  • Очень простая настройка.
  • Работает в любом кластере Kubernetes.
  • Удобно для dev/test окружений.

⚠️ Минусы

  • Доступен только диапазон портов 30000–32767.
  • Нужно знать IP-адреса узлов.
  • Не лучший вариант для продакшена (лучше LoadBalancer или Ingress).

Когда использовать NodePort

  • Для локальных кластеров (Minikube, kind).
  • В разработке и тестировании.
  • В небольших кластерах без облачного LoadBalancer.

Итог

  • NodePort — простой способ открыть сервис Kubernetes наружу.
  • Он пробрасывает фиксированный порт на всех нодах в кластер.
  • Отлично подходит для обучения и разработки, но в продакшене лучше использовать LoadBalancer или Ingress.