Blog

  • Kubernetes und networking, what to consider

    nachdem k8s eine ideale Plattform darstellt um einen komplexen Softwarestack zu automatisieren wird dem Bereich des Netzwerks drumherum meines erachtens zu wenig Aufmerksamkeit geschenkt. In den meisten Fällen wird ein on premise Cluster in die bestehende L2 Netzwerk Infrastruktur integriert, ein Augenmerk auf die sich eröffnenden Möglichkeiten, in Kombination mit SDN networks wird leider zu oft kein Augenmerk gelegt.

    Ich selbst gehöre ebenfalls zu dieser Gruppe, da die Komplexität, die ein k8s Cluster selbst mitbringt, für viele bereits große Herausforderungen mitbringt. Die große Frage, die sich oft stellt ist hier:

    „Wie implementieren die großen Cloud Provider einen externen LoadBalancer für unterschiedliche k8s Cluster?“

    Lange blieb diese Frage für mich unbeantwortet, man behilft sich mit automatisierten Haproxy / whatever Pärchen, die über eine durch keepalived gesteuerte HA IP, an die Außenwelt angebunden ist. Tatsächlich gibt es wohl die Möglichkeit, ich selbst habe sie nie versucht, den Haproxy Ingress Controller auch extern zu betreiben. Eine entsprechende Anleitung ist auf der haproxy Webseite zu finden, bspw. unter diesem Link: haproxy ingress controller external

    Ein auffallender Punkt, auch in diesem Artikel auf dem haproxy blog ist die Verwendung einer Software (bird), der die alloziierten HA IPs dynamisch via BGP im Netzwerk verteilt. Cilium als k8s CNI beherrscht ebenfalls die Distribution von IPs, die an Services vom Typ LoadBalancer gebunden sind via BGP an die umgebende Netzwerk Umgebung.

    Oft vorgeschlagenen Lösungswege dynamische IP’s im Netzwerk bekannt zu geben, stellen oft einen „Glue k8s and L2 networks together“ Ansatz dar, sind funktional, schöpfen allerdings nicht das volle Potential einer dynamischen Netzwerkumgebung aus.

    Lange Rede, kurzer Sinn: k8s wurde als Automatisierungstool für den Softwarestack gebaut, um wirklich das volle Potential auszuschöpfen ist zusätzlich eine Form von Netzwerkautomatisierung notwendig.

    Eine Infrastruktur die sich hier anbietet, allerdings mit einem gewissen Grad an Komplexität verbunden ist, stellt die dynamische Netwerk Architektur „VXLAN BGP EVPN Fabric“ dar.

    Für dieses Setup steht in meinem Homelab ein alter Cisco MG350 10P, eine ebenfalls alte APU2C4, sowie ein 1,5 Jahre alter Desktop mit einer AMD Ryzen 9 7950X 16-Core Processor mit 128 GB RAM sowie mehreren nvme SSD’s, der als KVM Hypervisor betrieben wird, zur Verfügung.

    Die Umgebung selbst wird in nachfolgenden Artikeln beschrieben, da der gesamte Umfang der Konfiguration und Konzepte den Umfang eines Artikels bei weitem sprengen würde.

    Für den interessierten Leser gibt es grundlegende Informationen unter folgenden Links / Büchern.