Что дает NodePort в Kubernetes?

«Что дает NodePort в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

NodePort — это тип Service в Kubernetes, который открывает статический порт на каждой Node кластера. Любой трафик, приходящий на этот порт любой Node, перенаправляется в Service, а затем в Pod.

Основные характеристики:

  • Порт назначается из диапазона 30000-32767 (по умолчанию), но можно указать конкретный.
  • Доступ к приложению возможен по схеме: <IP_любой_Nodes>:<NodePort>.
  • Для маршрутизации трафика с NodePort на Pod используется kube-proxy (режим iptables или ipvs).

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

  • Для доступа к сервису извне кластера в тестовых или dev-средах.
  • Когда LoadBalancer недоступен (например, в bare-metal окружениях).
  • Как промежуточный шаг перед настройкой Ingress.

Пример манифеста:

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - port: 80        # Порт самого Service (внутри кластера)
      targetPort: 8080 # Порт контейнера в Pod
      nodePort: 30080  # Статический порт на Node (опционально)

Недостатки для production:

  • Необходимо управлять доступом по IP-адресам Nodes.
  • При падении Node, её IP становится недоступным.
  • Обычно используется в связке с внешним балансировщиком нагрузки или Ingress-контроллером.