Об этом проекте
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) и обширной документацией, охватывающей сборку, настройку, устранение неполадок и интеграции.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.