Об этом проекте

Flannel — это простое и эффективное решение для построения сетевой фабрики, в первую очередь предназначенное для сред Kubernetes, хотя оно также поддерживает развертывание Docker. Его основная функция — установление сети IPv4 уровня 3 между несколькими узлами в кластере, гарантируя, что каждый контейнер (под) имеет уникальный маршрутизируемый IP-адрес. Такая модель упрощает сеть, устраняя сложности, связанные с совместным использованием IP-адресов хостов. ### Основная архитектура Flannel работает через легковесный бинарный агент под названием `flanneld`, который запускается на каждом хосте в кластере. Агент отвечает за выделение конкретной подсети каждому хосту из более крупного предварительно настроенного адресного пространства. Для поддержания состояния и конфигурации Flannel использует либо API Kubernetes напрямую (известный как kube subnet manager), либо внешний кластер etcd. Такая гибкость позволяет хранить сетевые конфигурации, выделенные подсети и вспомогательные данные, такие как публичные IP-адреса хостов. ### Механизмы бэкенда Пересылка пакетов между хостами обрабатывается через различные механизмы бэкенда. Они включают VXLAN для оверлейных сетей и специальные интеграции, адаптированные для разных облачных провайдеров. Пользователи могут выбрать бэкенд, который лучше всего соответствует требованиям их инфраструктуры. ### Поддержка сетевых политик Хотя Flannel фокусируется на связности, а не на применении политик, он предлагает варианты интеграции сетевых политик: - **Встроенный контроллер:** Челм-чарт Flannel включает опцию развертывания контроллера сетевых политик Kubernetes SIGs вместе с Flannel. - **Сторонние контроллеры:** Пользователи могут комбинировать Flannel с другими проектами, такими как Calico или Cilium, для расширенного применения политик, возможно, используя цепочки CNI. ### Варианты развертывания Для кластеров Kubernetes Flannel можно развернуть вручную или через менеджеры пакетов: - **kubectl:** Пользователи могут применить официальный манифест напрямую с помощью `kubectl apply`. - **Helm:** Выделенный репозиторий Helm позволяет легко устанавливать и управлять конфигурацией. Рекомендуется использовать манифесты, прикрепленные к конкретным релизам, для обеспечения совместимости. Кроме того, для развертывания Flannel требуется модуль ядра `br_netfilter` и установка сетевых плагинов CNI в `/opt/cni/bin`. Для сред, не связанных с Kubernetes, таких как автономные установки Docker, Flannel всегда полагается на etcd как на хранилище данных. Документация предоставляет подробные руководства для этих сценариев. ### Сообщество и лицензирование Flannel — это проект с открытым исходным кодом, лицензированный под Apache 2.0. Он поддерживает активное сообщество с регулярными встречами мейнтейнеров, каналами Slack для поддержки (#k3s в Rancher Slack, #flannel-users в Calico Slack) и обширной документацией, охватывающей сборку, настройку, устранение неполадок и интеграции.