Flannel ist ein schlankes Overlay-Netzwerk für Kubernetes, das ursprünglich von CoreOS entwickelt wurde. Es gilt als die einfachste Möglichkeit, Pods über mehrere Nodes hinweg miteinander zu verbinden — bekannt für das Motto „es funktioniert einfach“.
Wie funktioniert Flannel?
Flannel weist jeder Node ein eigenes Subnetz aus einem großen IP-Pool (Standard: /16) zu. Ein Daemon namens flanneld läuft auf jeder Node und legt die Zuordnung im Kubernetes-Speicher ab (früher etcd, heute eine CRD). Für die eigentliche Datenübertragung stehen mehrere Backends zur Wahl:
- VXLAN ist das Standard-Backend: Die Pakete der Pods werden in UDP-Tunnel gekapselt und über das bestehende Netz transportiert. Funktioniert über Layer-3-Grenzen hinweg.
- host-gw ist das schnelle Backend: Statt eines Tunnels werden direkte Routen zu den Nodes angelegt. Es ist schneller, funktioniert aber nur, wenn alle Nodes im selben Layer-2-Segment liegen.
- WireGuard ergänzt verschlüsselte Tunnel.
Grenzen
Flannel selbst unterstützt keine NetworkPolicies. In Clustern, die Policies brauchen, wird es deshalb häufig mit Calico kombiniert, das die Policy-Durchsetzung übernimmt. Durch seine Einfachheit ist Flannel der Standard-CNI in k3s und vielen kleinen Clustern.
Verwandte Grundlagen: CNI, VXLAN, Kubernetes-Node, Calico, Cilium.