Модуль static-routing-manager управляет статическими маршрутами и правилами ip rule на узлах кластера.
Модуль работает со следующими кастомными ресурсами API-группы network.deckhouse.io:
- IPRuleSet — описывает набор правил
ip rule, которые будут созданы на узлах, подходящих подnodeSelector; - RoutingTable — описывает таблицу маршрутизации и содержащиеся в ней маршруты для узлов, подходящих под
nodeSelector.
Модуль также работает с внутренними кастомными ресурсами API-группы internal.network.deckhouse.io:
- SDNInternalNodeIPRuleSet — содержит набор правил
ip ruleдля конкретного узла кластера; - SDNInternalNodeRoutingTable — содержит таблицу маршрутизации для конкретного узла кластера.
Подробнее с настройками модуля и примерами его использования можно ознакомиться в соответствующем разделе документации.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
Архитектура модуля static-routing-manager на уровне 2 модели C4 и его взаимодействия с другими компонентами Deckhouse Platform изображены на следующей диаграмме:
Компоненты модуля
Модуль состоит из одного компонента agent (DaemonSet) и одного контейнера agent. Agent запускается на каждом узле кластера и выполняет следующие действия:
- следит за кастомными ресурсами SDNInternalNodeRoutingTable и SDNInternalNodeIPRuleSet и обновляет их статус;
- применяет статические маршруты и правила
ip ruleк таблице маршрутизации ядра узла.
Кастомные ресурсы SDNInternalNodeRoutingTable и SDNInternalNodeIPRuleSet создаются контроллером Deckhouse модуля deckhouse для каждого узла кластера, подходящих под nodeSelector ресурсов IPRuleSet и RoutingTable.
Взаимодействия модуля
Модуль взаимодействует с kube-apiserver:
- управляет кастомными ресурсами SDNInternalNodeRoutingTable и SDNInternalNodeIPRuleSet;
- следит за кастомными ресурсами IPRuleSet и RoutingTable и обновляет их статус.