Я использую контроллер cluster-api, использующий Kubernetes в качестве поставщика инфраструктуры, я пытаюсь запустить Kubernetes Nodes как Kubernetes Pods и сформировать кластер внутри кластера.
У меня это работает отдельно от сетевого подключения между модулями внутреннего кластера (работающими на модулях кластера инфраструктуры), но я застрял в том, в чем проблема.
Я работаю на GKE, используя их реализацию CNI по умолчанию. Затем я пытаюсь использовать Calico для реализации наложения внутреннего кластера, используя инкапсуляцию IP-in-IP, поэтому узлам кластера инфраструктуры не нужно знать, как маршрутизировать IP-адреса Pod внутреннего кластера.
Я создаю кластер инфраструктуры следующим образом (образ UBUNTU необходим для модуля ядра ipip
, необходимого для IP-in-IP Calico.
gcloud container clusters create management-cluster --image-type=UBUNTU
Затем я развертываю несколько модулей nginx во внутреннем кластере. Если они попадают на один и тот же внутренний узел кластера, они могут подключаться друг к другу. Если они приземляются на отдельные внутренние узлы кластера, они не могут, поэтому я предполагаю, что это означает, что туннель IP-in-IP не работает должным образом, но я не уверен, почему. Это не удается, даже если внутренние узлы кластера (поды) приземляются на тот же узел инфраструктуры (внешний кластер). Диапазоны CIDR модуля и службы двух кластеров не перекрываются.
Я понимаю, что это не поддерживаемый вариант использования Calico, но я не вижу причины, по которой это невозможно, и хотел бы, чтобы он работал. Должны ли узлы внешнего кластера поддерживать пересылку пакетов IP-in-IP? Они настроены на пересылку пакетов IPv4, но я не уверен, что этого достаточно.
Я предполагаю, что требуется больше информации, чтобы указать конкретную причину, почему это не работает, но я не слишком уверен, что это будет на данном этапе, и был бы благодарен за любое указание.