Flannel — это простой и легкий способ настройки сетевой структуры третьего уровня, предназначенной для Kubernetes.
Flannel запускает на каждом хосте небольшой единый двоичный агент, называемый flanneld
, и отвечает за выделение аренды подсети каждому хосту из более крупного, предварительно настроенного адресного пространства. Flannel использует либо Kubernetes API, либо напрямую etcd для хранения конфигурации сети, выделенных подсетей и любых вспомогательных данных (например, общедоступного IP-адреса хоста). Пакеты пересылаются с использованием одного из нескольких серверных механизмов, включая VXLAN и различные облачные интеграции.
Такие платформы, как Kubernetes, предполагают, что каждый контейнер (под) имеет уникальный маршрутизируемый IP-адрес внутри кластера. Преимущество этой модели заключается в том, что она устраняет сложности с сопоставлением портов, возникающие при совместном использовании одного IP-адреса хоста.
Фланнель отвечает за обеспечение сети IPv4 уровня 3 между несколькими узлами в кластере. Flannel не контролирует подключение контейнеров к хосту, а только то, как трафик передается между хостами. Тем не менее, flannel предоставляет плагин CNI для Kubernetes и руководство по интеграции с Docker.
Фланель ориентирована на нетворкинг. Для сетевой политики можно использовать другие проекты, такие как Calico.
Самый простой способ развернуть flannel с помощью Kubernetes — использовать один из нескольких инструментов развертывания и дистрибутивов, которые по умолчанию объединяются в сетевые кластеры с flannel. Например, K3s устанавливает flannel в кластерах Kubernetes, которые он создает, используя установщик K3s с открытым исходным кодом для управления процессом установки.
Хотя это и не обязательно, рекомендуется, чтобы flannel использовал Kubernetes API в качестве резервного хранилища, что позволяет избежать необходимости развертывания отдельного кластера etcd
для flannel
. Этот flannel
режим известен как менеджер подсети kube .
Flannel можно добавить в любой существующий кластер Kubernetes, хотя проще всего добавить flannel
до запуска каких-либо модулей, использующих сеть модулей.
Для Кубернетеса v1.17+
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Если вы используете собственный podCIDR
(не 10.244.0.0/16
), вам сначала необходимо загрузить приведенный выше манифест и изменить сеть в соответствии с вашей.
# Needs manual creation of namespace to avoid helm error
kubectl create ns kube-flannel
kubectl label --overwrite ns kube-flannel pod-security.kubernetes.io/enforce=privileged
helm repo add flannel https://flannel-io.github.io/flannel/
helm install flannel --set podCidr= " 10.244.0.0/16 " --namespace kube-flannel flannel/flannel
Дополнительную информацию см. в разделе Kubernetes.
Если настроен брандмауэр, убедитесь, что включен правильный порт, используемый настроенным сервером.
Flannel по умолчанию использует portmap
в качестве сетевого плагина CNI; при развертывании Flannel убедитесь, что подключаемые модули сети CNI установлены в /opt/cni/bin
Последние двоичные файлы можно загрузить с помощью следующих команд:
ARCH= $( uname -m )
case $ARCH in
armv7 * ) ARCH= " arm " ;;
aarch64) ARCH= " arm64 " ;;
x86_64) ARCH= " amd64 " ;;
esac
mkdir -p /opt/cni/bin
curl -O -L https://github.com/containernetworking/plugins/releases/download/v1.6.0/cni-plugins-linux- $ARCH -v1.6.0.tgz
tar -C /opt/cni/bin -xzf cni-plugins-linux- $ARCH -v1.6.0.tgz
Для запуска Flannel требуется модуль br_netfilter, а начиная с версии 1.30 kubeadm не проверяет, установлен ли модуль, и Flannel не запустится корректно, если модуль отсутствует.
flannel также широко используется за пределами Kubernetes. При развертывании за пределами Kubernetes в качестве хранилища данных всегда используется etcd. Более подробную информацию об интеграции фланели с Docker см. в разделе «Бег».
Сообщество специалистов по обслуживанию фланели проводит встречи каждый второй четверг в 8:30 утра по тихоокеанскому стандартному времени. Эта встреча используется для обсуждения проблем, открытых запросов на включение и других тем, связанных с Flannel, если возникнет такая необходимость.
Повестку собрания и ссылку на команды можно найти здесь: Повестка дня собрания сообщества Flannel.
Подробную информацию об отправке исправлений и рабочем процессе внесения вклада см. в разделе «Внесение вклада».
Подробную информацию о том, как сообщать о любых проблемах, см. в разделе «Сообщения об ошибках».
Flannel находится под лицензией Apache 2.0. Подробности смотрите в файле ЛИЦЕНЗИИ.