port-forward и проверка доступа

Чтобы быстро потыкать сервис с ноутбука, не нужен ни NodePort, ни Ingress — есть port-forward.

kubectl port-forward пробрасывает порт с вашей машины напрямую на под или сервис в кластере — удобно для отладки, не публикуя приложение наружу.

Service с типом ClusterIP не виден снаружи кластера. Но во время разработки часто нужно «заглянуть» в него с ноутбука. port-forward создаёт временный туннель: локальный порт → под/сервис. Доступ есть только пока команда запущена.

Проброс на под

Свяжем локальный порт 8080 с портом 80 пода:

kubectl port-forward pod/nginx-pod 8080:80

Вывод:

Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

Пока команда работает, открываем в браузере http://localhost:8080 — увидим страницу nginx. Ctrl+C закрывает туннель.

Проброс на сервис

Чаще пробрасывают на сервис — тогда трафик идёт через его балансировку:

kubectl port-forward service/web 8080:80

Формат тот же: ЛОКАЛЬНЫЙ:УДАЛЁННЫЙ. Можно слушать на всех интерфейсах флагом --address 0.0.0.0, но для локальной отладки это не нужно.

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

port-forward — только для разработки и отладки. Для постоянного внешнего доступа он не годится (живёт, пока открыт терминал, не балансирует на уровне кластера). Сравним способы доступа:

СпособНазначениеПостоянный?
port-forwardбыстрая отладка с ноутбуканет
NodePortдоступ по порту узлада
LoadBalancerпубличный доступ в облакеда
IngressHTTP-роутинг многих сервисовда

Итог

  • port-forward создаёт временный туннель локальный порт → под/сервис.
  • Формат kubectl port-forward цель ЛОКАЛЬНЫЙ:УДАЛЁННЫЙ.
  • Это инструмент отладки, а не способ публикации в проде.
Проверьте себя
1. Для чего предназначен kubectl port-forward?
AДля постоянной публикации сервиса в интернете
BДля временного туннеля к поду или сервису ради отладки
CДля сборки образов
DДля масштабирования подов
2. Как читается 8080:80 в команде port-forward?
AЛокальный 80 -> удалённый 8080
BЛокальный 8080 -> удалённый 80
CОба порта на узле
DЭто диапазон портов
3. Почему port-forward не подходит для продакшена?
AОн шифрует трафик
BОн живёт только пока открыт терминал и не даёт кластерной балансировки
CОн требует Ingress
DОн работает только с базами данных
Поддержать проект