Модуль cni-simple-bridge обеспечивает базовую работу сети для подов в Deckhouse Platform и реализует Container Network Interface (CNI).
CNI-плагин cni-simple-bridge использовался по умолчанию для модулей cloud-provider-aws, cloud-provider-azure, cloud-provider-gcp и cloud-provider-yandex в версиях платформы Deckhouse до 1.77.0. Начиная с версии платформы 1.77.0 для указанных модулей по умолчанию используется CNI Cilium модуля cni-cilium.
Модуль не имеет настраиваемых параметров.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
Архитектура модуля cni-simple-bridge на уровне 2 модели C4 и его взаимодействия с другими компонентами DP изображена на следующей диаграмме:
Компоненты модуля
Модуль состоит из следующих компонентов:
-
Simple-bridge (DaemonSet) — компонент запускается на каждом узле кластера и подготавливает CNI-плагин к работе. Для этого компонент получает подсеть подов из поля
spec.podCIDRресурса Node и формирует конфигурацию для запуска исполняемого файлаbridgeкомпонентом containerd при каждом создании или удалении сетевого пространства имён пода. При вызовеbridgeзапрашивает выделение IP-адреса у плагина IP Address Management (IPAM)host-local.Плагины
bridgeиhost-localявляются стандартными Open Source-плагинами CNI, устанавливаемыми на каждый узел кластера независимо от этого модуля, в рамках установки kubelet.Состоит из следующих контейнеров:
- cni-migration-init-checker — init-контейнер, ожидающий завершения процесса миграции с другого CNI-плагина, если такая миграция была запущена;
- iptables-wrapper — init-контейнер, подготавливающий исполняемые файлы для работы с iptables;
- simple-bridge — основной контейнер.
Взаимодействия модуля
Модуль взаимодействует с компонентом Kube-apiserver:
- читает ресурсы Node;
- следит за кастомными ресурсами CNIMigration и CNINodeMigration.