Unsere Reise mit Kubernetes: Eine stetige Weiterentwicklung für eine zukunftssichere Infrastruktur

Seit wir 2016 damit begonnen haben, unsere Software vollständig über Docker bereitzustellen, hat sich vieles verändert. Die anfängliche Lösung hat ihren Zweck erfüllt, doch mit den steigenden Anforderungen in den Bereichen Hochverfügbarkeit, unterbrechungsfreies Deployment, Nutzung eigener Hardware und Infrastructure as Code (IaC), haben wir nach neuen, skalierbaren Lösungen gesucht.

2019 standen zu Beginn viele Optionen zur Auswahl, und es war noch unklar, welche Software sich langfristig durchsetzen würde. Nach diversen Tests mit verschiedenen Tools, darunter auch Apache Mesos, wurde jedoch schnell klar: Kubernetes ist die zukunftssicherste und leistungsfähigste Lösung.

Die ersten Schritte in die Kubernetes-Welt waren durchaus herausfordernd, weshalb wir mit diesem Beitrag mögliche Optionen für die Bereitstellung einer eigenen Kubernetes-Infrastruktur vorstellen möchten.

Die Auswahl des richtigen Tools

Auf der offiziellen Kubernetes-Website werden verschiedene Tools zur Einrichtung einer Produktionsumgebung vorgeschlagen. Hier ein Überblick über die wichtigsten Optionen:

  • Manuelles Deployment
  • kubeadm
  • Cluster API
  • kops
  • kubespray

Manuelles Deployment

Theoretisch ist es möglich, Kubernetes vollständig manuell aufzusetzen. Dieser Ansatz bietet tiefgehendes Wissen über Kubernetes und ist aus IT-Sicht äußerst spannend. Für die meisten jedoch, einschließlich uns zu Beginn, ist dieser Weg jedoch zu umständlich und zeitaufwendig.

kubeadm

Heute gilt kubeadm als Best Practice (siehe Dokumentation). Es ermöglicht, ein Kubernetes-Cluster relativ einfach über die Kommandozeile (CLI) zu konfigurieren. Wer gerne mit der CLI arbeitet, findet hier einen schnellen und effektiven Weg, Cluster aufzusetzen.

Cluster API

Die erste stabile Version der Cluster API wurde 2021 veröffentlicht. Als wir unsere Kubernetes-Cluster aufbauten, war dieses Tool noch nicht verfügbar. Mittlerweile ist es jedoch eine exzellente Wahl für plattformübergreifende Bereitstellungen, insbesondere in Cloud-Umgebungen.

kops

Kops eignet sich ausschließlich für die Bereitstellung von Kubernetes-Clustern in der Cloud und unterstützt nicht die Bereitstellung auf eigener Hardware. Daher war es für uns keine Option, da wir unsere eigene Infrastruktur nutzen wollten.

kubespray

Unsere erste Wahl war damals kubespray. Wir haben die ersten Cluster mit kubespray auf Basis von Ubuntu Server aufgesetzt. Warum? Wir waren mit Ansible vertraut und schätzten die Transparenz des Tools. kubespray ermöglicht eine klare Automatisierung, ohne den Einblick in die Funktionsweise zu verlieren. Die Bereitstellung ist einfach: Git-Repository auschecken, eine Konfigurationsdatei erstellen und ein Ansible-Playbook ausführen.

Herausforderungen und Anpassungen

Im Laufe der Zeit gab es jedoch immer wieder Herausforderungen. Die Anforderungen änderten sich, und wir trafen neue Erkenntnisse über den Betrieb und die Wartung der Infrastruktur. So wechselten wir das Betriebssystem von Ubuntu auf Flatcar für neue Instanzen, da es in Kombination mit Kubernetes eine stabilere Grundlage bot. Doch trotz dieser Anpassungen gab es immer wieder Probleme bei Updates und neuen Bereitstellungen, die wir manuell beheben mussten.

Unsere Entscheidung für Rancher

Schließlich entschieden wir uns für Rancher, ein Kubernetes-Bereitstellungstool, das mittlerweile zu SUSE gehört. Rancher bietet eine benutzerfreundliche Oberfläche und erleichtert die Verwaltung von Kubernetes-Clustern erheblich. Der grundlegende Ablauf sieht wie folgt aus:

  1. Aufsetzen der Rancher-Maschinen (ideal in einem eigenen Kubernetes-Cluster, alternativ auch über Docker – allerdings nicht empfohlen).
  2. Erstellung eines neuen Kubernetes-Clusters über das Web-Interface.
  3. Hinzufügen von Nodes mit nur einem einzigen Befehl.

Trotz der Vereinfachung des Prozesses möchten wir einige Tipps teilen, die aus unseren Erfahrungen resultieren:

  • Rancher-Maschinen richtig aufsetzen: Achten Sie darauf, die Maschinen von Anfang an mit der richtigen Domain, SSL-Zertifikaten und Netzwerkdetails zu konfigurieren. Änderungen nachträglich sind komplex und oft problematisch.
  • Rancher virtualisieren: Virtualisierte Maschinen bieten den Vorteil, dass Sie sie vor einem Update vollständig sichern können. Beachten Sie jedoch, dass Updates von Rancher selbst nicht immer reibungslos verlaufen.
  • Längerfristige Zuverlässigkeit: Die Software funktioniert im Allgemeinen gut, ist jedoch nicht völlig frei von Problemen.

Fazit

Aktuell setzen wir Rancher als primäre Lösung zur Bereitstellung von Kubernetes-Clustern ein. Dennoch behalten wir auch die Alternativen kubeadm und Cluster API im Auge und testen regelmäßig, wie sich der Betrieb der Instanzen mit diesen Tools verhält.

Die Einführung von Kubernetes war anfangs herausfordernd, aber durch kontinuierliche Anpassungen und Lernprozesse haben wir eine stabile und zukunftssichere Infrastruktur aufgebaut. Die anfänglichen Schwierigkeiten sind mittlerweile weitgehend überwunden, und wir sind überzeugt, dass sich der Aufwand in jeder Hinsicht gelohnt hat.

Wir hoffen, dass dieser Beitrag Ihnen hilft, Ihre eigene Kubernetes-Infrastruktur effektiver und effizienter aufzubauen. Lassen Sie uns wissen, welche Erfahrungen Sie gemacht haben!