Пользовательский исходящий сетевой путь для модуля kubernetes
Скажем у меня 2 сайта, S1,S2; каждый с по крайней мере рабочим kubernetes. Эти два сайта географически разделены и имеют разные публичные IP-адреса на узлах / рабочих.
Предлагает ли kubernetes какие-либо существующие механизмы для маршрутизации исходящего интернет-трафика из модуля / контейнера в S1 через S2?
Цель состоит в том, чтобы иметь возможность использовать общедоступные IP-адреса в S2 для модулей в S1.
Если K8S-федерация является необходимым условием для решения; тогда это нормально.
1 ответ
Kubernetes не имеет никакого отношения к этому, это зависит от вашего дизайна и структуры сети, как это было бы с традиционными виртуальными машинами или еще чем-то. Тем не менее, это звучит как очень плохой дизайн сети, учитывая то, что вы описали, поэтому я был бы удивлен, если бы это было легко настроить. Calico запускает обычный BGP под капотом, так что вы, вероятно, можете установить две AS и заставить одну маршрутизировать через другую.
С Calico вы можете ввести нестандартный IPPool
который не выполняет NAT для исходящего трафика. Затем вы можете аннотировать модули и / или пространства имен, которые хотите использовать,IPPool.
В этот момент у вас остается нерабочий исходящий трафик, поскольку IP-адреса вашего кластера "просачиваются" во внешний мир. Но обратный путь не известен ни одному восходящему маршрутизатору между вашим кластером и Интернетом.
Вы должны сообщить своему маршрутизатору, который должен находиться между вашим кластером и Интернетом, о диапазонах кластера. Вы можете использовать глобальныйBGPPeer
концепт из бязи. Как только вы это сделаете, также настройте BGP на вашем маршрутизаторе. (Используйте [1]) для получения дополнительной информации.
Оттуда у вас должна быть вся гибкость на вашем маршрутизаторе, чтобы маршрутизировать его по-разному в зависимости от того, что не по умолчанию IPPool
подсеть и / или первый туннель, например, для запрашивающегоS2
'
Обратите внимание, что если вы действительно не используете общедоступное IP-пространство, то есть IP-адреса, отличные от RFC-1918 (плюс некоторые другие), вам следует ввести NAT где-нибудь сейчас, вы можете сделать это в S1
или S2
, если вы выберете последнее, этот сайт также должен знать о обратном пути к вашему маршрутизатору.
На самом деле это не облачное решение, поскольку вы просто перемещаете проблему из кубернетов в область "старой школы" маршрутизации на основе политик в фиксированных подсетях - что на самом деле не то, о чем спрашивал, поскольку он подразумевал, что существует также кубернетский процесс в 'S2
'. В возможном решении выше процесс k8s не нужен вS2
.
Это то, что @coderanger в пользовательских исходящий сетевой путь для kubernetes стручка предлагал