Что такое 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, если они доступны.