Разверните OpenClaw в облаке в один клик
Вход/ Регистрация
На главную
Облачные сервисы

Виртуальные роутеры в Kubernetes

Виртуальный роутер позволяет организовать сетевую архитектуру Kubernetes-кластера без использования публичных IP-адресов на воркер-нодах. В этом случае внешний доступ к сервисам настраивается централизованно — через Ingress или балансировщики нагрузки.

Основные преимущества:

  • Экономия — воркеры не используют публичные IP.
  • Повышенная безопасность — нет прямого доступа к воркер-нодам из интернета.
  • Централизованная точка входа — внешний трафик проходит только через балансировщики или Ingress.
  • Более гибкая архитектура — воркер-ноды не привязаны к внешним IP и могут пересоздаваться без изменения сетевой схемы.

При такой конфигурации инфраструктура становится более декларативной: сетевые правила и точки входа описываются на уровне кластера, а сами ноды остаются «эфемерными» ресурсами.

Ограничения

Перед настройкой обратите внимание на ограничения и особенности работы виртуальных роутеров:

  • Поддержка доступна только в локациях Санкт-Петербург, Москва и Амстердам.
  • К одному кластеру может быть подключен только один виртуальный роутер.
  • Один виртуальный роутер может использоваться несколькими Kubernetes-кластерами, если они находятся в одной приватной сети.
  • Роутер и кластер должны находиться в одной приватной сети.
  • В настройках виртуального роутера должен быть включен DHCP для приватной сети.
  • У виртуального роутера должен быть подключен публичный IP и настроен NAT для приватной сети.
  • Для каждой группы воркер-нод обязательно должен быть выбран один из вариантов сетевого подключения: использование публичных IP или использование виртуального роутера.

Подключение роутера при создании кластера

Вы можете подключить виртуальный роутер на этапе создания нового кластера.

Опция «Публичный IP» на этапе конфигурации воркер-нод отключена по умолчанию. Если оставить ее выключенной, на этапе настройки сети появится возможность выбрать существующий виртуальный роутер или создать новый.

Если в выбранной приватной сети нет подходящего роутера, он будет создан автоматически. При необходимости вы можете изменить параметры нового роутера, нажав кнопку «Изменить параметры».

Scr 20260216 Omug

Если при настройке кластера выбран новый роутер, создание кластера может занять немного больше времени — сначала будет создан виртуальный роутер, и только после этого начнется развертывание кластера.

Подключение роутера к существующему кластеру

Чтобы подключить виртуальный роутер к уже созданному кластеру, перейдите во вкладку «Сеть». В строке «Интеграция с роутерами» нажмите кнопку «Подключить».

Scr 20260216 Onan

В открывшемся меню можно создать новый виртуальный роутер и сразу привязать его к кластеру либо выбрать уже существующий. В списке будут доступны только те роутеры, которые соответствуют требованиям: к ним подключен публичный IP, они находятся в одной приватной сети с кластером, а для этой сети включен DHCP.

После подтверждения настроек роутер будет подключен к кластеру и станет доступен для использования в группах воркер-нод.

Scr 20260216 Ongh

Работа с воркер-нодами

К кластеру может быть подключен только один виртуальный роутер, но способ сетевого подключения настраивается отдельно для каждой группы воркер-нод. Вы можете выбрать: использовать виртуальный роутер или назначать публичный IP каждому воркеру.

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

В открывшемся меню доступна настройка «Публичный IP». Если отключить ее, группа будет использовать виртуальный роутер. Если роутер еще не был подключен к кластеру, он создастся автоматически. Если включить «Публичный IP», виртуальный роутер для этой группы использоваться не будет, а каждой воркер-ноде будет назначен собственный публичный адрес.

Scr 20260219 Murj

Доступ к сервисам через проброс портов

Если кластер подключен к приватной сети вместе с виртуальным роутером, можно организовать внешний доступ к сервису без использования Ingress или балансировщика — через проброс портов на роутере.

В этом случае входящий трафик из интернета сначала поступает на публичный IP виртуального роутера, затем на указанный на нем порт и перенаправляется на приватный IP одной из воркер-нод. Далее запрос попадает на порт NodePort, открытый Kubernetes-сервисом, и обрабатывается приложением.

Для такой схемы кластер и виртуальный роутер должны находиться в одной приватной сети, при этом к роутеру должен быть подключен публичный IP и настроен доступ к приватным IP воркер-нод. В кластере должен быть создан сервис с типом NodePort, а на самом роутере — правило проброса порта на выбранную ноду и соответствующий порт сервиса.

При настройке стоит учитывать, что проброс выполняется на конкретную ноду. Если она станет недоступна, внешний доступ к сервису также перестанет работать.

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

Рассмотрим пример настройки. Создадим простой сервис и настроим к нему доступ из интернета через виртуальный роутер.

Для удобства создадим отдельный namespace, в котором будут находиться все ресурсы:

    
kubectl create namespace port-forward-example

Создадим ConfigMap со статической HTML-страницей. Файл config-map.yaml:

    
apiVersion: v1 kind: ConfigMap metadata: name: service-config namespace: port-forward-example data: index.html: | <!DOCTYPE html> <html> <head> <title>Demo Page</title> </head> <body> <h1>Hello from Kubernetes!</h1> <p>This is a static page served on port 30000.</p> </body> </html>

Далее создадим DaemonSet и сервис. Файл daemon-set.yaml:

    
apiVersion: apps/v1 kind: DaemonSet metadata: name: service namespace: port-forward-example spec: selector: matchLabels: app: service template: metadata: labels: app: service spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: index.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service namespace: port-forward-example spec: selector: app: service ports: - port: 80 targetPort: 80 nodePort: 30000 type: NodePort

В этом примере используется DaemonSet, чтобы поды запускались на каждой воркер-ноде, а сервис с типом NodePort открывает порт 30000 на всех нодах кластера.

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

    
kubectl apply -f config-map.yaml kubectl apply -f daemon-set.yaml

Проверим, что поды успешно запущены:

    
kubectl get pods -n port-forward-example

После этого в панели управления виртуальным роутером настройте проброс порта:

  1. Перейдите в раздел «Проброс портов».

  2. Выберите публичный IP и укажите внешний порт.

  3. В качестве приватного IP укажите IP одной из воркер-нод.

  4. Укажите порт 30000 (NodePort сервиса).

  5. Сохраните правило.

Scr 20260323 Oqju

После сохранения правило появится в списке, где будут отображаться публичный IP и внешний порт.

Scr 20260323 Osjr

Для проверки откройте в браузере указанный IP и порт — должна отобразиться страница с текстом «Hello from Kubernetes!».

Удаление виртуального роутера

Перед удалением виртуального роутера необходимо отвязать его от кластера. Пока роутер используется хотя бы одной группой воркер-нод, возможность удаления в панели управления будет недоступна.

Перейдите во вкладку «Ресурсы». Для каждой группы нажмите на три точки рядом с ее названием, выберите «Редактировать группу» и включите параметр «Публичный IP». После этого виртуальный роутер перестанет использоваться выбранной группой. Повторите действие для всех групп воркер-нод, в которых он был задействован.

Перейдите во вкладку «Ресурсы». Для удаления нажмите на три точки рядом с нужной группой и выберите «Удалить». Повторите действие для всех групп воркер-нод, использующих виртуальный роутер.

Когда роутер больше не используется воркерами, вернитесь во вкладку «Сеть». В строке «Интеграция с роутерами» станет активной кнопка «Отвязать» — нажмите ее, чтобы отключить роутер от кластера.

Scr 20260216 Olco

После отвязки откройте раздел «Сети» → «Роутеры», нажмите на три точки рядом с нужным роутером и выберите «Удалить». Кнопка удаления станет доступной сразу после отключения интеграции с кластером.

Scr 20260216 Olne

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев