Пользовательский исходящий сетевой путь для модуля 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 стручка предлагал

Другие вопросы по тегам