Flannel ist eine einfache Möglichkeit, eine für Kubernetes entwickelte Layer-3-Netzwerkstruktur zu konfigurieren.
Flannel führt auf jedem Host einen kleinen, einzelnen Binäragenten namens flanneld
aus und ist für die Zuweisung eines Subnetz-Leases an jeden Host aus einem größeren, vorkonfigurierten Adressraum verantwortlich. Flannel verwendet entweder die Kubernetes-API oder etcd direkt, um die Netzwerkkonfiguration, die zugewiesenen Subnetze und alle Hilfsdaten (z. B. die öffentliche IP des Hosts) zu speichern. Pakete werden über einen von mehreren Backend-Mechanismen weitergeleitet, darunter VXLAN und verschiedene Cloud-Integrationen.
Plattformen wie Kubernetes gehen davon aus, dass jeder Container (Pod) eine eindeutige, routbare IP innerhalb des Clusters hat. Der Vorteil dieses Modells besteht darin, dass die Komplexität der Portzuordnung entfällt, die durch die gemeinsame Nutzung einer einzelnen Host-IP entsteht.
Flannel ist für die Bereitstellung eines Layer-3-IPv4-Netzwerks zwischen mehreren Knoten in einem Cluster verantwortlich. Flannel kontrolliert nicht, wie Container mit dem Host vernetzt sind, sondern nur, wie der Datenverkehr zwischen Hosts transportiert wird. Flannel bietet jedoch ein CNI-Plugin für Kubernetes und eine Anleitung zur Integration mit Docker.
Flannel konzentriert sich auf Networking. Für die Netzwerkpolitik können andere Projekte wie Calico verwendet werden.
Der einfachste Weg, Flannel mit Kubernetes bereitzustellen, besteht darin, eines von mehreren Bereitstellungstools und Distributionen zu verwenden, die Cluster standardmäßig mit Flannel vernetzen. Beispielsweise richtet K3s Flannel in den von ihm erstellten Kubernetes-Clustern ein, indem es den Open-Source-K3s-Installer verwendet, um den Einrichtungsprozess voranzutreiben.
Obwohl dies nicht erforderlich ist, wird empfohlen, dass flannel die Kubernetes-API als Backing-Store verwendet, wodurch die Notwendigkeit vermieden wird, einen separaten etcd
Cluster für flannel
bereitzustellen. Dieser flannel
wird als Kube-Subnetzmanager bezeichnet.
Flannel kann zu jedem vorhandenen Kubernetes-Cluster hinzugefügt werden. Am einfachsten ist es jedoch, flannel
hinzuzufügen, bevor Pods gestartet wurden, die das Pod-Netzwerk verwenden.
Für Kubernetes v1.17+
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Wenn Sie benutzerdefiniertes podCIDR
(nicht 10.244.0.0/16
) verwenden, müssen Sie zunächst das obige Manifest herunterladen und das Netzwerk so ändern, dass es mit Ihrem übereinstimmt.
# 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
Weitere Informationen finden Sie unter Kubernetes.
Falls eine Firewall konfiguriert ist, stellen Sie sicher, dass der richtige Port aktiviert ist, der vom konfigurierten Backend verwendet wird.
Flannel verwendet standardmäßig portmap
als CNI-Netzwerk-Plugin; Stellen Sie beim Bereitstellen von Flannel sicher, dass die CNI-Netzwerk-Plugins in /opt/cni/bin
installiert sind. Die neuesten Binärdateien können mit den folgenden Befehlen heruntergeladen werden:
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 erfordert den Start des br_netfilter-Moduls und ab Version 1.30 prüft kubeadm nicht mehr, ob das Modul installiert ist, und Flannel startet nicht richtig, falls das Modul fehlt.
Flanell wird auch außerhalb von Kubernetes häufig verwendet. Bei der Bereitstellung außerhalb von Kubernetes wird etcd immer als Datenspeicher verwendet. Weitere Informationen zur Integration von Flannel mit Docker finden Sie unter Ausführen
Die Flannel Maintainer Community veranstaltet jeden zweiten Donnerstag um 8:30 Uhr PST ein Treffen. Bei diesem Treffen werden bei Bedarf Probleme, offene Pull-Anfragen und andere Themen im Zusammenhang mit Flannel besprochen.
Die Tagesordnung des Meetings und den Link zu den Teams finden Sie hier: Agenda des Flannel Community Meetings
Weitere Informationen zum Einreichen von Patches und zum Beitragsworkflow finden Sie unter BEITRAG.
Einzelheiten zum Melden von Problemen finden Sie unter „Fehler melden“.
Flannel steht unter der Apache 2.0-Lizenz. Einzelheiten finden Sie in der LICENSE-Datei.