Flannel est un moyen simple et facile de configurer une structure réseau de couche 3 conçue pour Kubernetes.
Flannel exécute un petit agent binaire unique appelé flanneld
sur chaque hôte et est chargé d'attribuer un bail de sous-réseau à chaque hôte à partir d'un espace d'adressage plus grand et préconfiguré. Flannel utilise soit l'API Kubernetes, soit etcd directement pour stocker la configuration réseau, les sous-réseaux alloués et toutes les données auxiliaires (telles que l'adresse IP publique de l'hôte). Les paquets sont transférés à l'aide de l'un des nombreux mécanismes backend, notamment VXLAN et diverses intégrations cloud.
Les plates-formes comme Kubernetes supposent que chaque conteneur (pod) possède une adresse IP unique et routable à l'intérieur du cluster. L’avantage de ce modèle est qu’il supprime les complexités de mappage de ports liées au partage d’une seule adresse IP d’hôte.
Flannel est chargé de fournir un réseau IPv4 de couche 3 entre plusieurs nœuds d'un cluster. Flannel ne contrôle pas la manière dont les conteneurs sont mis en réseau vers l'hôte, mais uniquement la manière dont le trafic est transporté entre les hôtes. Cependant, Flannel fournit un plugin CNI pour Kubernetes et des conseils sur l'intégration avec Docker.
Flannel se concentre sur le réseautage. Pour la politique de réseau, d'autres projets tels que Calico peuvent être utilisés.
Le moyen le plus simple de déployer Flannel avec Kubernetes consiste à utiliser l'un des nombreux outils de déploiement et distributions qui mettent en réseau des clusters avec Flannel par défaut. Par exemple, K3s configure Flannel dans les clusters Kubernetes qu'il crée à l'aide du programme d'installation open source K3s pour piloter le processus de configuration.
Bien que cela ne soit pas obligatoire, il est recommandé que Flannel utilise l'API Kubernetes comme magasin de sauvegarde, ce qui évite d'avoir à déployer un cluster etcd
discret pour flannel
. Ce mode flannel
est connu sous le nom de gestionnaire de sous-réseau Kube .
Flannel peut être ajouté à n'importe quel cluster Kubernetes existant, bien qu'il soit plus simple d'ajouter flannel
avant le démarrage des pods utilisant le réseau de pods.
Pour Kubernetes v1.17+
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Si vous utilisez podCIDR
personnalisé (et non 10.244.0.0/16
), vous devez d'abord télécharger le manifeste ci-dessus et modifier le réseau pour qu'il corresponde au vôtre.
# 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
Voir Kubernetes pour plus de détails.
Dans le cas où un pare-feu est configuré, assurez-vous d'activer le bon port utilisé par le backend configuré.
Flannel utilise portmap
comme plugin réseau CNI par défaut ; lors du déploiement de Flannel, assurez-vous que les plugins CNI Network sont installés dans /opt/cni/bin
les derniers binaires peuvent être téléchargés avec les commandes suivantes :
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 nécessite le démarrage du module br_netfilter et à partir de la version 1.30, kubeadm ne vérifie pas si le module est installé et Flannel ne démarrera pas correctement au cas où le module serait manquant.
la flanelle est également largement utilisée en dehors de Kubernetes. Lorsqu'il est déployé en dehors de Kubernetes, etcd est toujours utilisé comme banque de données. Pour plus de détails sur l'intégration de Flanelle avec Docker, voir Exécution
La communauté des responsables de la flanelle organise une réunion un jeudi sur deux à 8h30 PST. Cette réunion est utilisée pour discuter des problèmes, des demandes de tirage ouvertes et d'autres sujets liés à Flannel si le besoin s'en fait sentir.
L'ordre du jour de la réunion et le lien vers les équipes peuvent être trouvés ici : Ordre du jour de la réunion de la communauté Flannel
Voir CONTRIBUTION pour plus de détails sur la soumission de correctifs et le flux de travail de contribution.
Voir rapport de bogues pour plus de détails sur la façon de signaler tout problème.
Flannel est sous licence Apache 2.0. Voir le fichier LICENSE pour plus de détails.