Что такое 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.