Я реализую контроллер 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, но я не уверен, что этого достаточно.
Я думаю, требуется больше информации, чтобы указать конкретную причину, почему это не работает, но я не совсем уверен, что это было бы в этой точке и было бы благодарно за любое направление.