Getty Images/iStockphoto
Strategien zur Verwaltung mehrerer Kubernetes-Cluster
Der Betrieb mehrerer Kubernetes-Cluster hat verschiedene Vorzüge. Wenn Sie die folgenden Tipps beachten, können Sie die Verwaltung mehrerer Cluster vereinfachen.
Eines der besten Merkmale von Kubernetes ist die integrierte Skalierbarkeit. Kubernetes erledigt all die harte Arbeit für Sie, die Bereitstellung von Instanzen ist also nur noch ein Kinderspiel.
Allerdings befindet sich ein virtuelles Kubernetes-Cluster in einem physischen Rechenzentrum. Das bedeutet, es teilt alle noch so geringen Risiken, die das Rechenzentrum betreffen. Die Risiken für ein Kubernetes-Cluster sind vielfältig, dazu zählen Datenverlust, Ransomware und interne IT- oder Hardware-Ausfälle. Aber auch physische Gefahren wie Erdbeben, Tornados, Überschwemmungen und Diebstahl gehören dazu.
Selbst große Cloud Service Provider (CSPs) sind vor dieser Realität nicht gewappnet. Deshalb haben CSPs mehrere redundante physische Rechenzentren innerhalb einer einzigen Cloud-Region mit lokal und geografisch redundantem Speicher entwickelt.
Vorteile von Kubernetes mit mehreren Clustern
Bei der Kubernetes-Verwaltung hat die Verwendung mehrere Cluster verschiedene Vorteile. Wenn Ihre Anwendungen angemessen auf mehrere Cluster verteilt sind, wiegt der Verlust eines einzelnen Clusters nicht so schwer wie der Verlust eines Clusters mit allen darauf befindlichen Anwendungen.
Kubernetes-Umgebungen mit mehreren Clustern haben vor allem Pluspunkte, wenn sie geografisch redundant sind. Voraussetzung dafür ist, sie sind richtig konfiguriert und werden entsprechend verwaltet. Zu den Vorteilen des Betriebs mehrerer Kubernetes-Cluster gehören:
- Ausführung verschiedener Cluster-Softwareversionen. Das Upgrade eines Clusters ist nicht risikofrei. Wenn eine ordnungsgemäß konzipierte Anwendung auf mehrere Cluster und Regionen aufgeteilt ist, können im Falle eines Fehlers in einem Cluster andere, entsprechend konfigurierte Cluster die Last übernehmen. Manchmal muss ein Cluster auf einer bestimmten Softwareversion bleiben, aber es ist möglich, andere Versionen auf anderen Clustern zu haben.
- Trennung von Umgebungen. Die Trennung von Entwicklungs- und Produktionsclustern gilt als Best Practice, um das Risiko zu verringern, dass Beta- oder Nicht-Produktionscodeversionen verwendet werden. Außerdem unterliegen einige Umgebungen den Regeln der Datenhoheit (Data Sovereignty): Es wird also ein geografischer Standort in einem bestimmten Rechenzentrum oder einer bestimmten Region vorgeschrieben.
- Bessere Erfahrung für den Endbenutzer. Niemand mag langsames Internet. Durch die Aufteilung von Arbeitslasten mit einem Load Balancer wie Azure Traffic Manager wird den Benutzern eine geografisch nahe gelegene Umgebung zur Verfügung gestellt. So können die Leistung verbessert und die Latenzzeit verringert werden.
Kubernetes-Cluster vs. Namespaces
Mit Kubernetes-Namespaces können Anwendungen oder Teile einer Anwendung im selben Cluster logisch gruppiert werden, ohne dass Kubernetes-Konfigurationen mit mehreren Clustern in Betracht gezogen werden müssen. Namespaces können lediglich Anwendungen bei Bedarf logisch segmentieren, aber es sind keine separaten Cluster und sie verbessern auch die Redundanz nicht.
Herausforderungen von Kubernetes mit mehreren Clustern
Diese Ausfallsicherheit gibt es nicht umsonst. Die meisten modernen Cloud-Anbieter, wie zum Beispiel Azure, haben ein Referenzdesign für Multi-Cluster-Setup. Da Container kurzlebig sind, ist es sinnvoll, von Anfang an so viel wie möglich für Ausfälle zu planen.
Durch ordnungsgemäße Konfiguration und geeignete Datenverkehrsführung wird eine schnellere Bearbeitung von Anfragen durch die Bereitstellung von Ressourcen aus verschiedenen geografischen Gebieten ermöglicht. Der Cluster liegt so geografisch näher, als es sonst der Fall gewesen wäre. Die Konfiguration der entsprechenden Load Balancer und des Routings erfordert aber einige Vorabinvestitionen.
Auch aus rechtlichen Gründen kann die Isolierung von Daten notwendig sein. Diese rechtlichen Überlegungen sind deutlich einfacher, wenn sich all Ihre Daten in einem Land oder einer Region befinden, das beziehungsweise die genau definierte Regeln für Datenhoheit und -verwaltung befolgen muss, wie beispielsweise die DSGVO. Einzelheiten sind jedoch von Ihren Kunden und deren Standorten in der Welt abhängig. Das ist wichtig zu bedenken, da Fehler finanziell ruinös sein können. Kurzum, es gibt mehr abzuwägen als Verfügbarkeit und Technologie.
Die Verwaltung mehrerer Kubernetes-Cluster ist aus technischer Sicht komplexer als die Verwaltung eines einzelnen Clusters. Mehrere Cluster benötigen mehrere Cluster-Konfigurationsdateien. Durch eine zentralisierte Verwaltung können doppelte Arbeiten vermieden und Verwaltungsaufwand und Fehleranfälligkeit reduziert werden.
Tools für Kubernetes Multi-Cluster-Management
Für Automatisierung und Sollzustand gibt es mehrere Tool-Optionen. Die Entscheidung, welche Software passt, hängt oft vom erforderlichen Maß an Kontrolle und der Komplexität der Umgebung ab. Bevor man sich für ein Tool entscheidet, müssen diese Faktoren angemessen berücksichtigt werden.
Infrastructure as Code
Kubernetes und Infrastructure as Code (IaC) gehen Hand in Hand. IaC unterstützt dabei, die Konsistenz der Bereitstellung zu gewährleisten, und menschliche Fehler werden reduziert. Wenn es um die Erstellung einer IaC-Umgebung geht, ist Terraform das Tool der Wahl: Es kann Infrastruktur im Handumdrehen abschalten und erstellen.
Diese unterschiedlichen Bereitstellungsvorlagen erfordern aber eine Versionskontrolle, um nützlich zu sein. Wenn die Bereitstellungsvorlagen ordentlich verwaltet werden, ist das Zurücksetzen auf eine frühere Konfiguration so einfach wie die Verwendung des Git-Befehls git revert und das erneute Ausführen des Prozesses.
Gemanagte Kubernetes-Dienste
Auch wenn es möglich ist, eigene Cluster auf virtuellen oder physischen Maschinen zu erstellen, gibt es viele Gründe, Kubernetes-Dienste zu nutzen, die von den meisten großen CSPs angeboten werden. Dazu gehören Google Kubernetes Engine oder Amazon Elastic Kubernetes Service.
Der Anbieter übernimmt bei diesen Kubernetes-Diensten die meiste Arbeit und Wartung. Das kann die Verwaltung mehrerer Cluster bei richtiger Implementierung erheblich billiger machen.
Service Meshes
Service Meshes bieten Tools für die Verwaltung komplexerer Infrastrukturen. Ein beliebtes Beispiel ist Open Service Mesh, aber die meisten Service Meshes verfügen über eine breite Palette von Funktionen:
- Erkennung von Diensten
- Traffic-Management
- Überwachung der vollständigen Prozesse und nicht nur einzelner Dienstkomponenten
Service Mesh Tool helfen auch bei der Durchsetzung von Sicherheitsvorgaben, beispielsweise der Verschlüsselung zwischen allen Diensten mit Mutual Transport Layer Security. Außerdem unterstützen sie dabei, die Konformität der laufenden Prozesse in großem Maßstab sicherzustellen.