BLOG

Warum Cloud Kubernetes nicht so herstellerunabhängig ist, wie es scheint – und was man dagegen tun kann

F5 Miniaturansicht
F5
Veröffentlicht am 26. November 2020
kubernetes1

Kubernetes ist eine Open-Source-Plattform. Sie könnten also meinen, dass es sich um eine herstellerunabhängige Plattform handelt und Sie problemlos von einer Kubernetes-Implementierung zu einer anderen wechseln können.

Aber Sie liegen falsch. Die Realität ist, dass viele Kubernetes-Lösungen – insbesondere solche, die an eine bestimmte öffentliche Cloud gebunden sind – viel weniger herstellerunabhängig sind, als Sie vielleicht denken.

Dies bedeutet zum Glück nicht, dass Sie die Vorteile der öffentlichen Cloud nicht als Kubernetes-Hosting-Lösung nutzen können, wenn Sie eine Abhängigkeit vermeiden möchten. Das können Sie, aber Sie müssen Ihre Kubernetes-Strategie so gestalten, dass Sie nicht an den Kubernetes-Dienst eines bestimmten Cloud-Anbieters gebunden sind, aber dennoch die Vorteile des Cloud-basierten Kubernetes nutzen können.

Cloudbasierte Kubernetes-Optionen

Heute bieten alle großen öffentlichen Clouds gehostete Kubernetes-Dienste über eine SaaS-Architektur an. Amazon verfügt über den Elastic Kubernetes Service. Azure stellt den Azure Kubernetes-Dienst bereit. Google bietet Google Kubernetes Engine an. IBM verfügt über den IBM Cloud Kubernetes Service.

Da diese Dienste eine Cloud-basierte Infrastruktur mit Software kombinieren, die die Bereitstellung und Verwaltung von Kubernetes automatisiert, sind sie eine attraktive Lösung für Unternehmen, die Kubernetes schnell in Betrieb nehmen möchten.

Lock-In-Risiken von Cloud Kubernetes

Die Tatsache, dass diese Cloud-Kubernetes-Dienste agnostisch erscheinen, erhöht auch ihre Attraktivität. Oberflächlich betrachtet könnte es so aussehen, als wäre der Wechsel von einer Kubernetes-SaaS-Plattform zu einer anderen recht einfach. Alle diese Plattformen basieren auf dem standardmäßigen Open Source Kubernetes. Sie bieten Zugriff auf dieselben Kubernetes-Tools (wie kubectl) und unterstützen im Allgemeinen dieselben Arten von Speicher- und Netzwerkkonfigurationen. In diesem Licht betrachtet erscheinen sie ziemlich herstellerunabhängig.

Bei genauerem Hinsehen wird jedoch klar, dass die öffentlichen Clouds, die Kubernetes als gehosteten Dienst anbieten, nicht ganz so flexibel und allgemein sind, wie sie auf den ersten Blick erscheinen mögen. Sie sind in verschiedene Weise mit anderen Diensten integriert, die in den öffentlichen Clouds ausgeführt werden, in denen sie gehostet werden, und von diesen abhängig. Sie müssen IAM-Richtlinien in der Cloud erstellen, die Sie zum Verwalten Ihrer Kubernetes-Cluster verwenden. Möglicherweise verwenden Sie zur Authentifizierung anbieterspezifische Dienste wie Azure Active Directory im Fall von Azure Kubernetes Service. Und in vielen Fällen gibt es Zusatz- oder Ersatztools, deren Verwendung die Kubernetes-Dienste bevorzugen, auch wenn diese nicht unbedingt erforderlich sind. Google Kubernetes Engine möchte beispielsweise, dass Sie gke-deploy anstelle von kubectl verwenden, während Elastic Kubernetes Service für die Verwendung mit eksctl, dem proprietären Tool von Amazon, konzipiert ist.

Obwohl der zugrunde liegende Kubernetes-Code unabhängig von der Cloud, die Sie zum Hosten von Kubernetes verwenden, derselbe sein kann und Sie technisch gesehen bei generischen Tools bleiben könnten, wenn Sie es wirklich wollten, sind die Tools und Konfigurationen, die Sie höchstwahrscheinlich verwenden werden, nicht anbieterunabhängig. Sie sind spezifisch für den von Ihnen verwendeten Kubernetes-Dienst.

Dies stellt eine große Barriere dar, wenn Sie beispielsweise vom Azure Kubernetes Service zur Google Kubernetes Engine wechseln möchten. Auch wenn Sie Ihre Kubernetes-Workloads verschieben können, ist dies mit den unterstützenden Toolchains und Konfigurationsdateien nicht möglich.

Vermeiden Sie Cloud-Kubernetes-Lock-In

Wenn Sie beim Bereitstellen von Kubernetes-Clustern die Vorteile der Benutzerfreundlichkeit und Skalierbarkeit der öffentlichen Cloud nutzen möchten, sich jedoch nicht an eine bestimmte Lösung binden möchten, stehen Ihnen zwei grundlegende Lösungen zur Verfügung.

Eine Möglichkeit besteht darin, mithilfe cloudbasierter virtueller Maschinen manuell eigene Cluster einzurichten und diese dann selbst zu verwalten. Bei diesem Ansatz erhalten Sie zwar nicht die Automatisierung und Integrationen, die mit den SaaS-Kubernetes-Angeboten der Cloud-Anbieter einhergehen, Sie bekommen aber dennoch die Infrastruktur. Da Sie keine Spezialwerkzeuge verwenden, können Sie Ihre Cluster einfacher von einem Cloud-Host zu einem anderen migrieren, ohne alles neu erstellen zu müssen. Der Nachteil hierbei ist natürlich, dass für die Einrichtung und Verwaltung Ihrer Cluster ein erheblicher manueller Aufwand erforderlich ist.

Der andere Ansatz – der stärker automatisiert und skalierbar ist – besteht darin, eine Lösung wie den VoltStack® -Dienst von Volterra zum Verwalten Ihrer Cluster zu verwenden, unabhängig davon, in welchen Clouds sie sich gerade befinden. Mit dieser Strategie ersetzen Sie im Wesentlichen die Cloud-spezifischen Tools der Plattformen der einzelnen Anbieter durch ein zentrales Befehls- und Kontrollzentrum, das mit jeder öffentlichen Cloud funktioniert und die Migration oder Replikation von Clustern zwischen verschiedenen öffentlichen Clouds vereinfacht. Sie erhalten die gleiche Verwaltbarkeit wie bei Diensten wie Google Kubernetes Engine und Azure Kubernetes Engine, ohne an bestimmte öffentliche Clouds gebunden zu sein.

Abschluss

Machen Sie nicht den Fehler anzunehmen, dass Kubernetes Kubernetes ist, egal wo oder wie Sie es ausführen. Zwischen den verschiedenen Cloud-basierten Kubernetes-Diensten bestehen erhebliche Unterschiede. Dies kann die Portabilität von Kubernetes-Clustern von einer Cloud in eine andere erschweren (ganz zu schweigen davon, dass die Verwaltung von Clustern in unterschiedlichen Clouds schwierig ist, da jede über einen anderen Satz von Tools verfügt).

Die gute Nachricht ist, dass es eine Lösung gibt: Indem Sie zur Verwaltung aller Ihrer Cluster eine Cloud-agnostische Kubernetes-Verwaltungslösung wie den VoltStack -Dienst von Volterra verwenden, machen Sie sich von der Abhängigkeit von einem bestimmten Cloud-Anbieter frei und profitieren dennoch von der Benutzerfreundlichkeit des Cloud-basierten Kubernetes.