Managed Kubernetes neu mit Cluster-Dateisystem – Einfache Migration bestehender Anwendungen

Betreibe deine klassische Applikation in einem skalierbaren Container, ohne dass dazu tiefgreifende Änderungen an der Architektur notwendig sind. Unser virtuelles, verteiltes Cluster-Dateisystem macht es möglich, Dateien dynamisch und zeitgleich auf beliebig vielen Nodes lesen und schreiben zu können.

Bereits seit 2015 nutzen wir Container für den produktiven Betrieb von Webapplikationen. Nach dem Start mit Discourse als Managed Application haben wir stetig weitere Anwendungen in Container verpackt, sodass wir heute alle Managed Applications auf der Basis von Containern betreiben. Darauf folgte im Jahr 2018 mit der Inbetriebnahme unseres ersten k8s Clusters ein weiterer Schritt im Bereich Container Orchestrierung. Und seit 2019 halten wir ebenfalls Einführungskurse zu Kubernetes ab.

Eine der grössten Schwierigkeiten bei der Migration auf eine Container-basierende Infrastruktur war für unsere Kunden bisher der Umstand, dass Dateizugriffe strukturiert an einem zentralen Ort stattfinden müssen. Damit war es nicht möglich, eine bestehende Applikation mit Lese- und Schreibzugriffen ins Dateisystem direkt und skalierbar zu portieren. Stattdessen mussten die betreffenden Teile der Applikation gemäss den Cloud-Native-Grundsätzen umgebaut werden. Dies ist zwar meistens ohnehin eine gute Idee, aber aus Budget- oder technischen Gründen nicht immer realistisch machbar.

Im Zuge der internen Weiterentwicklung an unserem Managed Server kam bei uns der Wunsch auf, aus beliebigen Containern in dasselbe Dateisystem lesen und schreiben zu können, und zwar ohne die üblicherweise damit verbundenen Nachteile in Nutzung, Wartung und Performance.

Auf der Suche nach einer geeigneten Lösung sind wir auf das Volume Group Feature in unserem Nutanix Hypervisor gestossen. Dieses ermöglicht es uns, dasselbe virtuelle Blockdevice wie bei einem klassischen SAN auf mehreren Nodes gleichzeitig zu verwenden.

Damit diese virtuelle Festplatte auch wirklich auf mehreren Nodes zur selben Zeit beschrieben und gelesen werden kann, ist des Weiteren ein clusterfähiges Dateisystem notwendig. Wir haben uns nach einer Evaluation für OCFS2 von Oracle entschieden. Dieses ist Bestandteil des Linux Kernels und koordiniert die Zugriffe durch einen “Distributed Lock Manager” über alle beteiligten Systeme.

Dadurch haben wir die Basis für einen einfachen, sehr performanten und skalierbaren Speicher gelegt, welcher sich für herkömmliche Applikationen wie eine normale Festplatte nutzen lässt.

Aufbauend auf diesem neuen Dateisystem haben wir auch den k8s Teil überarbeitet. Anstelle von einem unmodifizierten (Vanilla) Kubernetes setzen wir neu auf die Distribution K3s. Diese ist sehr leichtgewichtig und ermöglicht den effizienten Betrieb von sowohl grossen als auch kleinen Clustern auf derselben Basis.

Zusammengefasst bietet unsere neue Managed Kubernetes Lösung folgende Vorteile:

  • Management, Überwachung, Backup und weitere Zusatzleistungen durch Ops One
  • Betrieb auf unserer hochverfügbaren Infrastruktur
  • Gleichzeitiger Lese- und Schreibzugriff ins gesamte Dateisystem – Bestehende Applikationen müssen nicht oder nur punktuell angepasst werden
  • Schlanker und skalierbarer Cluster basierend auf der K3s Distribution
  • Funktioniert nahtlos mit sehr grossen und kleinen Architekturen (ab 1 Node)

Gerne zeigen wir dir die möglichen Varianten für den Betrieb deiner Applikation in einem persönlichen Gespräch auf.