Проблемы подключения Calico IP-in-IP с вложенными контейнерами в Kubernetes - PullRequest
0 голосов
/ 06 января 2020

Я реализую контроллер cluster-api, используя Kubernetes в качестве поставщика инфраструктуры - то есть я пытаюсь запустить Kubernetes Nodes в качестве модулей Kubernetes и сформировать кластер в кластере.

У меня это работает отдельно от подключения к сети между модулями внутреннего кластера (работает на модулях кластера инфраструктуры), но я застрял в том, в чем проблема.

Я работаю на GKE, используя их реализация CNI по умолчанию. Затем я пытаюсь использовать Calico для оверлейной реализации внутреннего кластера, используя инкапсуляцию IP-in-IP, поэтому узлам кластера инфраструктуры не нужно знать, как маршрутизировать IP-адреса внутреннего кластера.

I Создаю кластер инфраструктуры следующим образом (образ UBUNTU необходим для модуля ядра ipip, необходимого для инкапсуляции Calico IP-in-IP .

gcloud container clusters create management-cluster --image-type=UBUNTU

Затем я развертываю номер из nginx Стручки к внутреннему кластеру. Если они приземляются на один и тот же узел внутреннего кластера, они могут подключаться друг к другу. Если они приземляются на отдельных узлах внутреннего кластера, они не могут, поэтому я предполагаю, что это означает, что туннель IP-in-IP не не работает должным образом, но я не уверен, почему. Это дает сбой, даже если узлы (блоки) внутреннего кластера находятся на одной и той же инфраструктуре (внешний кластер) Узлы. Диапазоны Pod и Service CIDR двух кластеров не перекрываются.

Я понимаю, что это не поддерживаемый вариант использования Calico, но я не вижу причины, по которой это невозможно, и хотел бы получить это работает. Должны ли узлы внешнего кластера поддерживать пересылку пакетов IP-in-IP? Они настроены на пересылку пакетов IPv4, но я не уверен, что этого достаточно.

Я думаю, требуется больше информации, чтобы указать конкретную причину, почему это не работает, но я не совсем уверен, что это было бы в этой точке и было бы благодарно за любое направление.

1 Ответ

1 голос
/ 06 января 2020

Необходимо было разрешить ipencap протокол на узлах GKE:

iptables -C FORWARD -p ipencap -j ACCEPT || iptables -A FORWARD -p ipencap -j ACCEPT
...