У меня есть 3 узла, на которых запущено несколько OpenVPN pods
, каждый модуль имеет VPN-сеть 100.70.0.0/16
, и клиенты, которые подключаются к этим модулям, получают IP-адреса в этом диапазоне, например, предположим, что клиент 100.70.162.91
подключился к одному из модулей.
Теперь я хочу добавить больше модулей, запускающих различные сервисы в этом кластере, и каждый модуль должен иметь возможность общаться с каждым VPN-клиентом. Один из больших шагов, который я бы сделал до сих пор, используя AWS ECS, — это добавление маршрута, например, ip route add 100.70.192.91/32 via <OpenVPN-pod-IPv4>/32
в таблицу маршрутизации подсети VPC кластера, как только клиент подключается с помощью API AWS, этот метод, похоже, также работает с использованием docker-compose
и Kubernetes
до тех пор, пока все модули находятся в одной сети.
Однако теперь, когда я пытаюсь перейти с ECS на Kubernetes, я не могу найти способа добавить статические маршруты для всей сети кластера в Kubernetes.
Как лучше всего реализовать это в Kubernetes?
решение1
Если вы используете vanilla k8s вместо ECS, у вас есть возможность добавить такие маршруты на рабочих узлах. Таким образом, трафик pod в сети, отличные от k8s (сеть VPN-клиентов отличается от сети pod k8s), будет выходить через таблицу маршрутизации рабочих узлов. Вам нужно добавить статический маршрут в сеть VPN-клиентов на рабочих узлах. Назначение маршрута вы устанавливаете vpn-pod IP. Он доступен с любого рабочего узла k8s.