Redundante Gateways für Kubernetes Cluster?

  • Hi, ich betreibe hier bei Netcup Kubernetes Cluster. Mein Team und ich arbeiten an einer art Kubernetes Hosting. Dementsprechend verständlich ist die Tatsache, das Security und High-Availability für und höchste Priorität haben.


    Unsere VServer sind im Moment mit einem VLAN verbunden. Ein Gateway sorgt für die Verbindungen ins Internet, zusätzlich ist ein NGINX als Loadbalancer darauf eingerichtet.


    Genau um dieses Gateway drehen sich in diesem Thread meine Fragen. Die VServer von Netcup haben zwar eine sehr gute Verfügbarkeit, aber ein redundantes System kann in vielen Situationen zusätzlichen Downtime vermeiden. Beispielsweise beim Updaten oder Configs ändern, die meist einen Restart des entsprechenden Dienstes oder des gesamten Systems erfordern. Daher möchten wir ein zweites Gateway einrichten, das zumindest als Fallback genutzt werden soll. Sofern aber eine Parallele Nutzung möglich wäre, könnte dies durchaus weitere Vorteile bringen.


    Die Hauptfrage ist: wie realisiere ich ein redundantes Gateway? Das ich eine FailOverIP Adresse zwischen den beiden Servern wechseln lasse ist für für die meisten Realisierungen nicht zu vermeiden, aber wie ich intern ein solches Netzwerk aufziehe, ist mir noch nicht ganz klar.


    So in etwa stelle ich mir die Realisierung vor:

    Eine art interne FailOverIP Adresse, beziehungsweise entsprechende Netzwerk-Konfigurationen. Sofern so etwas realisierbar ist, hätte ich immerhin Ausfallsicherheit gewährleistet. Diese Variante würde bestimmt gut mit der Public FailOverIP funktionieren. In Anbetracht meiner anderen Umsetzungs-Ideen scheint mir diese ein guter Kompromiss zwischen Ausfallsicherheit und Umsetzbarkeit zu sein.


    So etwas wie eine virtuellen Switch für VLANs wäre wirklich praktisch, nur leider wird von Netcup so etwas nicht geboten so weit ich weiß. Einen weiteren Linux Server als Switch zu konfigurieren macht ebenso wieder keinen sinn, da ich dann wieder eine nicht Redundante Komponente im Netzwerk hätte.



    Mir schweben noch 2 andere Möglichkeiten zur Realisierung vor, diese haben aber meines Wissens entscheidende Nachteile entweder beim internen oder externen Traffic-Routing.
    1. Konfiguration von 2 VLANs, jedes der beiden Gateways einem der Netzwerke zugeteilt. Auf den Kubernetes Nodes würden ich beide Netzwerke identisch konfigurieren. Leider kann ich bei einer RKE Node nur eine Interne IP angeben und ich befürchte Probleme wenn ich die IP Vergabe in beiden VLANs komplett identisch gestalte.


    2. Über iproute2 eine Round-Robin Konfiguration mit Health-Check erstellen, wodurch die Interne Load auf beide Gateways verteilt würde. Aber die Dienste von außen anzusprechen wäre problematisch. Falls jemand diese Variante doch für Sinnvoll erachtet, bitte ich um ein paar Tipps worauf ich achten soll und generell wie das Konfiguriert werden kann. Bei DNS Servern kommt es durchaus mal zu Problemen wenn eine Domain auf zwei IP Adressen verweisen. Bei einem Ausfall dauert es eine Weile bis der DNS Server das Realisiert und den Traffic auf den aktiven Server umleitet.



    Ich hoffe es findet sich hier jemand mit gutem Kenntnissen im Bereich Netzwerktechnik. Bevor ich mit der Konfiguration starte und viel Zeit darin investiere, möchte ich hier ein paar Meinungen und Tipps einhohlen. Auch Links zu Anleitungen für ähnliche Probleme können sehr hilfreich sein.


    Vielen Dank.

    DevOps Engineer (Kubernetes Infrastruktur Manager)

  • Du bräuchtest ein dynamisches Routing z.B. über OSPF, oder eine interne Routing Service IP, die dann über ARP ihren neuen Standort schickt.

    Der Anbieter mit H aus Falkenstein bietet vSwitches zwischen seinen dedizierten Servern an, auf die auch ganze Subnetze geroutet werden können.


    Die Netcup VXLANs haben doch auch Switche?!

    Netcup selbst kann dir auch individuelle Angebote unterbreiten.

    Es solle aber jede Variante umsetzbar sein, auch die Variante mit einem vLAN und Failover Adressen.

  • Danke für deine Antwort. Da ich kein Experte im Bereich der Netzwerktechnik bin, kann ich mit deinem ersten Satz nicht viel anfangen aber ich werde recherchieren.

    Ich schätze das Preis-Leistungs-Verhältnis bei Netcup sehr. Auch die Erweiterungen wie VLANs oder dedizierte Gigabit Netzwerkkarten für VServer kommen mir zu gute. Für Dedizierte Server habe ich derzeit keine Verwendung. Was den Kosten-Nutzen-Faktor angeht sehe ich sie derzeit für unsere Einsatzzwecke als nicht sehr rentabel an.


    Was die Netcup VXLANs angeht, bin ich mir nicht sicher, weder im CCP noch im SCP gibt es Konfigurationsmöglichkeiten für Switches / VSwitches.

    Bei Netcup anzufragen ob sie eine individuelle Lösung anbieten können, wäre in der Tat eine Option. Danke für den Hinweis.

    Gut zu wissen praktisch alle Varianten umsetzbar wären. Dennoch würde ich mich über Empfehlungen und Tipps zur Umsetzung einer dieser Varianten freuen. Eventuell hat hier im Forum jemand bereits etwas ähnliches realisiert.

    DevOps Engineer (Kubernetes Infrastruktur Manager)

  • Für Dedizierte Server habe ich derzeit keine Verwendung.

    Naja schon, wenn du den Traffic den dein Cluster erzeugt irgendwo ausleiten und einleiten willst, ist das eine Möglichkeit.



    Da ich kein Experte im Bereich der Netzwerktechnik bin, kann ich mit deinem ersten Satz nicht viel anfangen aber ich werde recherchieren.

    Du brauchst halt einen Routing Dienst, der dem Linux Kernel sagt, welches Gateway es verwenden soll und wie die Pakete dort hin kommen, da du die Situation nicht mit statischen Routen in den Griff bekommen wirst, es sei denn du verwendest im VLAN Service IPs für deine Router. (Sprich Failover IPs innerhalb des VLANs).


    Für dynamisches Routing gibt es unterschiedliche Protokolle, eines davon ist OSPF. Die sind aber auch nicht trivial zu konfigurieren, hier brauchst du zwingend Expertise im Netzwerkbereich.


    weder im CCP noch im SCP gibt es Konfigurationsmöglichkeiten für Switches / VSwitches.

    Was für Konfigurationsmöglichkeiten vermisst du denn? Was möchtest du in einer Layer 2 Domäne konfigurieren?


    Ohne großartige Kenntnisse bleibt dir nur die Service IP. Du hast mind. zwei Server als Router im VLAN und einen Satz an Failover Adressen für IPv4 und IPv6. Die Router überwachen sich gegenseitig mit Corosync / Pacemaker. Über das VLAN haben die beiden eine Service Adresse z.B. 10.0.0.1 und fe80::1


    Wenn ein Server ausfällt, bekommt der andere das Kommando, bindet die Failover IP und Service IP an sich. Die Netcup API wird über den Wechsel der Failover IP informiert. Das VLAN bekommt die Änderung der Service IP mit arpping für IPv4 und radvd für IPv6 mit.

  • Du könntest die ‚einfache‘ Variante mit haproxy/nginx und keepalived umsetzen.


    Keepalived überwacht hierbei die Verfügbarkeit deines Services und übernimmt im Zweifel die Failover-IPs mittels Skript.