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.