Kubernetes Multi-Clusters: How & Why To Use Them

Kubernetes-Multi-Cluster: Wie und warum man sie verwendet.

  • ITOps & DevOps
6 Minuten Lesezeit Aktualisiert Jun 25, 2021

Auf einen Blick: Kubernetes-Multi-Cluster verbessern die Skalierbarkeit und Verfügbarkeit der Anwendung, indem sie Arbeitslasten über mehrere Cluster verteilten, was das Ressourcenmanagement und die Einhaltung der Vorschriften verbessert und die Latenz reduziert. Sie ermöglichen bessere Benutzererfahrungen und regulatorische Einhaltung durch Anwendungsisolation.

  • Multi-Cluster verbessern das Nutzererlebnis, indem sie die Latenz reduzieren.
  • Sie erleichtern Anwendungsisolation und regulatorische Einhaltung in verschiedenen Regionen.

Containerisierte Deployments bieten mehr Skalierbarkeits- und Verfügbarkeitsverbesserungen im Vergleich zu herkömmlichen Deployments. Selbst mit diesen Verbesserungen können komplexe Anwendungen containerisierte Umgebungen ohne angemessenes Management schnell überfordern. Kubernetes hilft Organisationen dabei:

  • Orchestrieren Sie effektiv containerisierte Umgebungen
  • Effiziente Verwaltung der zugrundeliegenden Ressourcen und Nutzeranforderungen

Es gibt jedoch Situationen, in denen ein einzelner Kubernetes-Cluster die Anwendungsbelastung nicht bewältigen oder die Anwendung nicht richtig an die Endnutzer verteilt hat. In solchen Fällen sind Multi-Cluster-Kubernetes-Lösungen ideal, um die Arbeit über mehrere Cluster zu verteilen.

In diesem Artikel werfen wir einen Blick auf Multi-Cluster-Implementierungen von Kubernetes.

Was ist ein Kubernetes-Multi-Cluster?

Kubernetes-Multicluster ist eine Umgebung mit mehreren Kubernetes-Clustern. Sie können auf verschiedene Arten konfiguriert werden:

  • Innerhalb eines einzigen physischen Wirts
  • Mit verschiedenen mehreren Hosts im selben Rechenzentrum
  • In verschiedenen Regionen innerhalb eines einzigen Cloud-Anbieters
  • Nutzung mehrerer Cloud-Anbieter und verteilt über mehrere Regionen, um eine wirklich globale Multi-Cluster-Umgebung zu schaffen

Eine Multi-Cluster-Umgebung ist nicht einfach das Ausführen mehrerer Kubernetes-Cluster.

Stattdessen sollte es aus geeigneten Anwendungsbereitstellungsstrategien bestehen, um die Anwendung über mehrere Cluster hinweg zu verteilen und zu warten, wobei geeignete Werkzeuge und Praktiken in den DevOps-Prozess integriert sind.

(Sehen Sie, wie Container und K8s zusammenarbeiten.)

Warum Kubernetes Multi-Cluster verwenden?

Die Konfiguration und Verwaltung von Multi-Cluster-Kubernetes-Deployments ist keine leichte Aufgabe. Warum sollte eine Organisation also wertvolle Ressourcen für dieses Vorhaben bereitstellen?

Der Grund: Nutzererfahrung.

Wenn es darum geht, groß angelegte Anwendungen mit Tausenden von Nutzern zu pflegen, sind Multi-Cluster der Kernbestandteil für ein exzellentes Nutzererlebnis. Schauen wir uns alle Vorteile einer Multi-Cluster-Umgebung an.

Vorteile von K8s Multi-Clustern

Erhöhte Skalierbarkeit und Verfügbarkeit

Mit Multi-Clustern können Nutzer die Anwendung über verschiedene Regionen verteilen und so die Verfügbarkeit exponentiell erhöhen. Dadurch haben Endnutzer eine deutlich bessere Erfahrung bei der Interaktion mit den Anwendungen mit:

  • Weniger Latenz
  • Schnellere Leistung

Dasselbe gilt für das Skalieren statt für einen einzelnen Cluster, der alle Skalierungsanforderungen erfüllen muss. Multi-Cluster-Deployments sind auf mehrere Cluster verteilt und skalieren entsprechend der Last eines bestimmten Clusters. Außerdem reduziert dies den Ressourcenverbrauch eines einzelnen Clusters drastisch und führt zu einer geringeren Last für Backend-Dienste wie Datenbanken.

Anwendungsisolation

Multi-Cluster-Deployments ermöglichen es Organisationen, echte Anwendungsisolation mit separaten Kubernetes-Clustern zu erreichen. Sie können entweder sein:

  • Verschiedene Cluster für Staging und Produktion (einfache Trennung)
  • Verschiedene Cluster, die unterschiedliche Anwendungen ermöglichen

Bei verschiedenen Clustern betrifft jeder Clusterausfall oder Konfigurationswechsel nur diesen spezifischen Cluster. Diese Isolation hilft den Nutzern:

  • Probleme leicht zu diagnostizieren
  • Experimentiere mit neuen Funktionen
  • Führen Sie Optimierungen durch, ohne andere Cluster zu stören.

Regulatorische Einhaltung

Da Anwendungen Nutzer weltweit bedienen, ist eine wichtige Überlegung die Einhaltung von Vorschriften und Richtlinien verschiedener Regionen und Länder – Richtlinien wie DSGVO und des California Consumer Privacy Act (CCPA). Dies ist besonders ausgeprägt, wenn es um Nutzerdaten geht, da die meisten Regionen verlangen, dass sich die Nutzerdaten innerhalb geografischer Grenzen befinden.

Wichtig ist, dass Anwendungen, die in einem einzigen Cluster gehostet werden, nicht alle diese Compliance-Anforderungen erfüllen können. Multi-Cluster-Deployments hingegen ermöglichen es Organisationen, diese Anforderungen zu erfüllen, indem sie den Kubernetes-Cluster in bestimmten geografischen Regionen ansiedeln.

Anwendungen, die sich an bestimmte geografische Regionen mit isolierten Kubernetes-Clustern richten, können:

  • Begrenze den Umfang regulatorischer Anforderungen
  • Ermöglicht es Organisationen, bestimmte Cluster gezielt anzusprechen, um unterschiedliche Anforderungen zu erfüllen und relativ leicht regulatorische Compliance zu erreichen

Die Einrichtung und Verwaltung von Multi-Cluster-Deployments kann eine komplexe und zeitaufwändige Aufgabe sein. Glücklicherweise kann eine korrekt konfigurierte Multi-Cluster-Umgebung die gesamte Verwaltungskomplexität verringern.

Mit einem ordnungsgemäßen Clustermanagement erhalten Sie bessere Transparenz mit standardisierten Prozessen und geeigneten DevOps-Praktiken, während Sie die gesamte Infrastruktur und Anwendungen von einem zentralen Ort aus verwalten. Dies kann ein wesentlicher Faktor bei der Verwaltung der Betriebsausgaben sein – Nutzer können Ressourcen effektiv zuweisen.

Außerdem sind in einer Multi-Cluster-Umgebung die Produktionsprobleme auf diesen spezifischen Cluster beschränkt. Das bedeutet, dass Entwickler nur einen begrenzten Umfang untersuchen müssen, um Probleme zu identifizieren und zu beheben, ohne andere Cluster zu beeinflussen. Entscheidend ist, dass ein kompletter Clusterausfall in einer Multi-Cluster-Umgebung keine Ausfallzeiten verursachen würde. Die anderen Cluster greifen ein, um die Verfügbarkeit sicherzustellen.

Nutzer sind nicht an eine echte Multi-Cloud-Bereitstellung gebunden . Wenn neue Funktionen oder Kosteneinsparungen bei neuen Cloud-Anbietern verfügbar sind, können Nutzer Anwendungen nahtlos mit minimalen Änderungen zwischen verschiedenen Anbietern oder Kubernetes-Clustern übertragen.

Verteilte Anwendungen

Mit steigenden Anforderungen an Edge-Computing und der Beliebtheit von Internet-of-Things-(IoT)-Diensten wird verteiltes Rechnen zur bevorzugten Lösung.

Eine Multi-Cluster-Kubernetes-Umgebung ist dafür die ideale Plattform.

Entwickler können einfach containerisierte Anwendungen erstellen, die in Kubernetes bereitgestellt werden können, während sie gleichzeitig eine leistungsstarke Orchestrierungs-Engine über mehrere Regionen hinweg bereitstellen. Dadurch entfällt die Notwendigkeit, Anwendungen auf verschiedene Umgebungen und Infrastrukturen abzustimmen, da diese Container als Edge-Nodes fungieren können, um ein globales IoT-Netzwerk zu ermöglichen.

Kubernetes-Multi-Cluster-Architektur

Bei der Multi-Cluster-Architektur gibt es zwei Überlegungen:

  • Die Kubernetes-Multi-Cluster-Konfiguration
  • Die Anwendungsarchitektur

Kubernetes-Multi-Cluster-Architektur

Es gibt hauptsächlich zwei Methoden, um eine Multi-Cluster-Kubernetes-Umgebung zu handhaben:

  • Die Kubernetes-zentrierte föderierte Methode
  • Die netzwerkzentrierte Methode

Verschiedene Anbieter bieten Variationen und Verbesserungen dieser Methoden an.

Eine Kubernetes-zentrierte Methode verwendet Werkzeuge wie Kubefed , um mehrere Kubernetes-Cluster von einem zentralen Ort aus zu verwalten (föderierte Cluster). Andere Tools wie Shipper und Admiralty können ermöglichen:

  • Rollout-Strategien
  • Multi-Cluster-Orchestrierung
  • Arbeitslastverteilung

Die netzwerkzentrierte Methode zielt darauf ab, ein robustes Netzwerk bereitzustellen, um die Kommunikation zwischen verschiedenen Clustern zu erleichtern. Die Cluster agieren als getrennte Einheiten, dennoch können Anwendungen über ein Netzwerk miteinander kommunizieren. Der Netzwerkansatz basiert auf Mesh-Netzwerkprinzipien und hat Service-Mesh-Konzepte an die Infrastruktur angepasst. Ein Beispiel für diesen Ansatz ist:

Die meisten Organisationen bevorzugen die netzwerkzentrierte Methode, da Kubernetes-zentrierte Multi-Cluster-Konfigurationen nicht ausgereift sind. Trotz der erhöhten Komplexität der Verwaltung eines Mesh-Netzwerks bewältigt dieser Ansatz effektiv Multi-Cluster-Umgebungen mit automatisierten Pipelines und standardisierten Konfigurationen mit GitOps, wodurch die Verwaltungskomplexität reduziert wird.

Multi-Cluster-Anwendungsarchitektur

Bei der Entwicklung von Multi-Cluster-Anwendungen sind zwei Anwendungsarchitekturen zu berücksichtigen – replizierte Apps und dienstbasierte Apps.

Replikierte Anwendungsarchitektur

Dieser Ansatz repliziert die vollständige Anwendung über mehrere Kubernetes-Cluster hinweg und ist der einfachste Weg, eine Multi-Cluster-Umgebung bereitzustellen. Da die gesamte Anwendung über mehrere Cluster in verschiedenen Regionen verteilt ist, können Endnutzer zum nächstgelegenen Cluster weitergeleitet werden, was Ihnen hilft, beides:

  • Die Last effektiv managen
  • Bieten Sie das beste Nutzererlebnis

Die Kombination dieser replizierten Anwendungsarchitektur mit einer geeigneten Netzwerkinfrastruktur und Lastbalancern kann Clusterfehler problemlos bewältigen. Wenn ein Cluster mit einem Problem konfrontiert ist, können Benutzer auf einen anderen Cluster umgeleitet werden, ohne dass sich die Endbenutzer- oder Anwendungsfunktionalität auswirkt.

Servicebasierte Anwendungsarchitektur

Eine weitere Entwicklungsarchitektur besteht darin, die Anwendung in mehrere Komponenten oder Dienste aufzuteilen und diese über Cluster zu verteilen. Sie bietet die beste Isolierung und ist die beste Option zur Einhaltung gesetzlicher Konformität. All dies führt jedoch zu einer erhöhten Anwendungskomplexität.

Da verschiedene Komponenten auf unterschiedlichen Clustern laufen, sollte die Kommunikationsschicht zwischen jeder Komponente so gestaltet sein, dass sie Benutzer- und Anwendungsverkehr bewältigen kann. Bei der Konfiguration einer fehlertoleranten Architektur müssen Organisationen:

  1. Behandle eine Menge von Clustern mit verschiedenen Komponenten der Anwendung als eine einzige Anwendung
  2. Repliziere es in einer anderen Region

Dies erhöht die Gesamtzahl der Cluster und die Betriebskosten.

Trotz der erhöhten Komplexität bietet dieser Ansatz jedoch die beste Sicherheit und Leistung für die Anwendung. Mit seinem komponentenbasierten Ansatz kann der regulatorische Anwendungsbereich auf eine einzelne Komponente in einem definierten Bereich beschränkt werden, ohne die gesamte Anwendung anpassen zu müssen.

Dieser Ansatz ermöglicht auch gezielte Fehlersuche und Optimierungen für spezifische Komponenten.

Plattformen für Kubernetes-Multi-Cluster

Es gibt viele Tools, die die Konfiguration oder Verwaltung von Kubernetes-Multi-Cluster-Umgebungen unterstützen. Im Folgenden finden Sie eine Liste solcher Plattformen.

  • Rancher ist eine unternehmensweite Container-Management-Plattform mit integrierter Unterstützung für Kubernetes-Multi-Cluster-Management auf verschiedenen Plattformen – von der On-Premise-Bereitstellung bis hin zu Multi-Cloud-Systemen.
  • Fleet ist ein GitOps-at-Scale-Projekt, das darauf ausgelegt ist, eine Multi-Cluster-Umgebung zu ermöglichen und zu verwalten. Es begann als Erweiterung des Rancher, hat sich aber inzwischen zu einem eigenen Projekt entwickelt.
  • Google Anthos ist darauf ausgelegt, die Google Kubernetes-Engine über Hybrid- und Multi-Cluster-Umgebungen auszuweiten. Dies ermöglicht es den Nutzern, ein konsistentes Kubernetes-Erlebnis zu bieten und gleichzeitig eine zentrale Multi-Cluster-Managementumgebung zu gewährleisten.
  • Microsoft Azure Arch ist darauf ausgelegt, das Azure-Management und die Dienste über hybride und Multi-Cloud-Umgebungen auszuweiten. Es ist nicht auf Kubernetes beschränkt, sondern kann auch zur Erweiterung von Kubernetes-Clustern und Azure Arch verwendet werden, wodurch ein zentraler Ort zur Verwaltung, Sicherung und Steuerung der Multi-Cluster-Kubernetes-Bereitstellung bereitgestellt wird.
  • VMWare Tanzu ist eine von VMWare angebotene Plattform zur Verwaltung und Sicherung der Kubernetes-Infrastruktur in Multi-Cloud-Umgebungen.

Multi-Cluster bieten vielfältige Vorteile

Kubernetes-Multi-Cluster ist ein umfangreiches Feld, das aus mehreren Implementierungen und Integrationsmethoden besteht, die Multi-Cluster-Deployments vorschreiben.

Angesichts aller Vorteile, die es für groß angelegte Anwendungen bietet, ist es von größter Bedeutung, dass Sie die passende Architektur für Ihre Multi-Cluster-Umgebung und Ihren Tool-Stack auswählen, um das Kubernetes-Multi-Cluster zentral zu verwalten.

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.