Хостинг
VDS
Аренда серверов
Домены
Почта
SSL
Хранилище
Сайты
Обзоры
Регламенты
AI Studio
Kubernetes
Архив
Использование kubectl port-forward

kubectl port-forward позволяет устанавливать прямой туннель между локальным компьютером и подом (или сервисом) внутри кластера Kubernetes. Это особенно полезно для отладки, тестирования или доступа к внутренним сервисам без открытия их через LoadBalancer или Ingress.

Основы синтаксиса

kubectl port-forward [ТИП_РЕСУРСА/ИМЯ_РЕСУРСА] [ЛОКАЛЬНЫЙ_ПОРТ]:ПОРТ_ПОДА

Примеры ресурсов:

  • pod/nginx-pod

  • service/nginx-svc

  • deployment/my-app

Обратите внимание: port-forward работает только с подами, даже если вы указываете service. Kubernetes автоматически выбирает один из подов, обслуживаемых сервисом.


Примеры использования

Для практического ознакомления рассмотрим полный пример: создадим простой под с Nginx и сервис, затем подключимся к ним через port-forward.

1. Создание манифеста

Сохраните следующее в файл test-nginx.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:alpine
    ports:
    - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80
  type: ClusterIP

2. Применение манифеста

kubectl apply -f test-nginx.yaml

Проверьте статус:

kubectl get pods,svc
# Ожидаемый вывод:
# NAME            READY   STATUS    RESTARTS   AGE
# pod/nginx-pod   1/1     Running   0          1m
# 
# NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
# service/nginx-svc ClusterIP   10.96.45.212    <none>        8080/TCP   1m

3. Проброс порта пода

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

Теперь Nginx доступен локально по адресу http://localhost:8080.

Проверка:

curl http://localhost:8080
# → возвращает HTML-контент Nginx

4. Проброс порта сервиса

kubectl port-forward service/nginx-svc 9000:8080

Локальный доступ: http://localhost:9000

Проверка:

curl http://localhost:9000
# → тоже возвращает HTML-контент Nginx

5. Автоматический выбор порта

Если второй порт не указан, kubectl использует тот же локальный порт, что и порт сервиса или пода

kubectl port-forward service/nginx-svc 8080

Эта команда эквивалентна следующей:

kubectl port-forward service/nginx-svc 8080:8080

6. Перенаправление нескольких портов

Для одновременного проброса нескольких портов:

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

Обратите внимание: в версиях v1.23+ поддерживается проброс нескольких портов за один вызов. Если под не принимает соединения на втором порту — команда завершится ошибкой.

7. Назначение случайного порта

Для того, чтобы автоматически выбрать свободный локальный порт можно воспользоваться следующей командой:

kubectl port-forward pod/nginx-pod :80

8. Указание адреса для приема соединений

По умолчанию port-forward принимает соединения только по адресу 127.0.0.1. Чтобы сделать порт доступным в локальной сети:

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

⚠️ Осторожно: это может быть небезопасно — порт станет доступен всем в локальной сети.

Нам доверяют тысячи компаний и разработчиков

22 года
Предоставляем услуги профессионального хостинга
35 000+
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime наших серверов хостинга
Callibri
Крылья
Tele-Club
Linline
Премьер зал
УГМК-Здоровье
Магнум
Алатырь
Туристер
Callibri
Крылья
Tele-Club
Linline
Премьер зал
УГМК-Здоровье
Магнум
Алатырь
Туристер
ВК49865