Tech-Blog
Moderator Moderator , Moderator Moderator Moderator
Tech-Blog
Kubernetes: Ein Kernel für unsere Zeit
Dec 10, 2019

 

1Blog1.jpg

 

Im Vorfeld der Konferenz KubeCon + CloudNativeCon North America 2019 veröffentlichen wir eine Reihe von Blogbeiträgen zu den Themen, die unserer Erwartung nach bei diesem Event im Mittelpunkt stehen werden. In unserem ersten Blogbeitrag wurde die Entwicklung von monolithischen Anwendungen hin zu Microservices erläutert, wobei wir die Vorteile von Microservices herausgestellt und untersucht haben, inwiefern Kubernetes dabei eine Schlüsselrolle zukommt.

 

Zwar mag Kubernetes (bei Juniper von der inzwischen berühmten JKitty, unserem Regenbogen-Schmetterling-Einhorn-Kätzchen, dargestellt) genau wie softwaredefinierte Netzwerke (SDN) auf den ersten Blick wie ein Allheilmittel erscheinen. Doch was beim Schmetterlingseffekt geschieht, wissen Sie bestimmt. Und ein kleiner Flügelschlag unseres Kubernetes-Kätzchens ruft eine große Wirkung hervor ... Kubernetes bietet zwar eine Vielzahl neuer Möglichkeiten und Funktionen, doch perfekt ist diese Plattform noch nicht. Denn obwohl Kubernetes einige Probleme aus dem Weg räumt, ist der Aufwand bei der Umstellung auf eine Microservices-Architektur nur eine der damit einhergehenden neuen Herausforderungen.

 

Wenn Anwendungen in Microservices aufgeteilt werden, ist eine gute und vor allem sichere Netzwerkinfrastruktur unentbehrlich, da Microservices das Netzwerk nutzen, um innerhalb der Anwendungen miteinander zu kommunizieren. Läuft bei all diesen Kommunikationskanälen etwas schief, liegt ein ernsthaftes Problem vor.

 

In der kommenden Woche wird Juniper bei KubeCon aufregende neue Lösungen in unseren Fachgebieten vorstellen, nämlich skalierbare Netzwerke und Sicherheit.

 

Und glücklicherweise ist es genau dieses Expertenwissen, das Kunden bei der Bewältigung der von Kubernetes verursachten Herausforderungen unterstützen kann. Im Folgenden schauen wir uns das Ganze etwas genauer an.

 

Die Chancen und Herausforderungen von Kubernetes und Microservices


Eine Anwendung mit einer soliden, auf Microservices basierten Architektur, sollte den Verlust eines einzigen Containers oder Serverknotens ganz gut verkraften können, solange sie von einer Orchestrierungsplattform verwaltet wird, die die entstandene Leistungslücke mit Instanzen der passenden Services füllen könnte. Schließlich sind Microservices darauf ausgelegt, einzelne Service-Instanzen am laufenden Band hinzuzufügen und zu entfernen, je nach Bedarf.

 

Diese skalierbare, fehlertolerante Orchestrierung gehört zu den zahlreichen Stärken der Kubernetes-Plattform, die sich Einschränkungen zunutze macht. Aus diesem Grund wird Kubernetes oft als Betriebssystem-Kernel der Cloud beschrieben. In vielerlei Hinsicht bietet Kubernetes überzeugende Vorteile als leistungsstarker Prozess-Scheduler für aus verteilten, auf Microservices basierten Anwendungen bestehenden Cluster. Doch es bedarf mehr als einen Kernel für die reibungslose Ausführung einer Anwendung.

 

Bei Juniper Networks konzentrieren wir uns seit Jahren auf die Vereinfachung des Netzwerkbetriebs, indem wir uns mit den Herausforderungen in Bereichen wie Speicherung, Sicherheit, Netzwerkarchitektur und Überwachung beschäftigen. Von unseren Kunden und aus eigener Erfahrung wissen wir, dass der erfolgreichen Verwaltung der Kubernetes-Plattform die Bewältigung solcher Herausforderungen vorausgeht.

 

Für Unternehmen ist ein Outsourcing des Problems dabei eine beliebte Lösung – zum Beispiel an einen Experten wie Juniper. Zwar lässt sich mit Kubernetes der Netzwerkbetrieb vereinfachen, allerdings zu einem Preis – die Betriebskosten steigen und es kommt zu gewissen Einbußen bei der Portierbarkeit und Einheitlichkeit der Multicloud-Umgebung. Alles in allem ist die Nutzung von Kubernetes also für viele Unternehmen die richtige, wenn auch nicht immer eine leichte Entscheidung, und wir unterstützen Sie dabei gerne.

 

Denken Sie grenzenlos

 

Kubernetes-Administratoren setzen bei der Bewältigung der mit der Plattform einhergehenden Herausforderungen oft auf die Beschränkung der Cluster-Größe.

 

Bei kleineren Clustern können die Auswirkungen eventueller Sicherheitsverletzungen und Ausfällen leichter eingedämmt werden. Außerdem erscheinen somit die Überwachung, Speicherung und der Betrieb im Netzwerk übersichtlicher. In einigen Fällen stellt jedes Anwendungsteam seinen eigenen Cluster bereit, in anderen wiederum gibt es für jede Phase des Anwendungslebenszyklus, also Entwicklung, Test, Bereitstellung und Produktion, einen eigenen Kubernetes-Cluster. Diese kleinen Cluster haben eine Größe von 10–20 Knoten mit jeweils ein paar Anwendungen, obwohl Kubernetes eine weitaus umfangreichere Skalierung unterstützt.

 

Es gibt sogar bereits einen Namen für all diese Cluster, nämlich das sogenannte „Kube-Sprawl“.

 

Obwohl kleinere Cluster einige Vorteile bieten, werden die ursprünglichen Probleme damit nicht gelöst, sondern nur verschoben – und das führt zu neuen Herausforderungen. Zum Beispiel führt die Verwaltung und Aktualisierung vieler einzelner Cluster sowie das Einspielen von Patches auf verschiedenen Clustern mit unterschiedlichen Kubernetes-Versionen zu einem erheblichen Mehraufwand. Und dann ist da noch die Tatsache, dass mehr Netzwerkarchitekten eingestellt und Automatisierungsprozesse eingeführt werden müssen, um den erhöhten Arbeitsaufwand zu bewältigen.

 

Hinzu kommt ein Effizienzverlust im Betrieb, da Server- oder VM-Knoten nicht mehreren Kubernetes-Clustern gleichzeitig zugewiesen werden können. Bei größeren Clustern kommen mehr Anwendungen, Teams und Batches zu bestimmten Spitzenzeiten zusammen, wodurch sich eine höhere Ressourceneffizienz erzielen lässt.

 

Außerdem werden in kleineren Clustern nur wenige Anwendungen ausgeführt, die den Ressourcenpool des Clusters kaum voll ausschöpfen können. Auch das führt zu Ineffizienzen und einem gewissen Maß an Ressourcenvergeudung. Zwar können Administratoren versuchen, die Anzahl der verwendeten Cluster-Nodes an die containerisierten Anwendungen anzupassen, doch dieser Prozess lässt sich aufgrund der diversen Anforderungen der Anwendungen in jedem Cluster nur schwer bewerkstelligen und automatisieren. Um die für Hochverfügbarkeit benötigte Leistung zu erreichen, müssen jedem Kubernetes-Cluster mindestens drei Serverknoten zugewiesen werden. Der dafür betriebene Aufwand zahlt sich bei so kleinen Clustern einfach nicht aus.

 

All diese Cluster stellen Entwickler vor neuen Herausforderungen. Diese lassen sich zwar mitunter durch bestimmte Cloud-native Tools und Funktionen, zum Beispiel die Überwachung von Microservices, meistern, doch sind solche Tools meist für den Einsatz innerhalb von Clustern und nicht für die Nutzung über mehrere Cluster hinweg konzipiert. Andere, neue Tools wie das Service-Mesh können clusterübergreifend genutzt werden, sind aber recht komplex.

 

Anwendungen umspannen Edge-Clouds und Multicloud-Umgebungen. Kann Ihre Cloud-native Infrastruktur da mithalten?

 

Kubernetes ist extrem nützlich, wenn es darum geht, einzelne Server-Cluster und die dazugehörigen Container zu verwalten. Doch einige Anwendungen werden in mehreren Clustern ausgeführt und umspannen mehrere Fehlerdomänen oder Verfügbarkeitszonen (Availability Zones, AZ). Diese Anwendungen werden nicht etwa in diversen kleinen Clustern innerhalb desselben Datencenters ausgeführt, sondern in mehreren Datencentern, um die Verfügbarkeit und globale Netzabdeckung zu steigern und die Latenz für Nutzer zu reduzieren.

 

Eine gute Lösung muss nicht nur die Herausforderungen in Sachen Sicherheit, Netzwerkarchitektur, Überwachung und Speicherung abdecken, sondern auch die Cluster in den verschiedenen Verfügbarkeitszonen, Regionen, Edge-Clouds und Multicloud-Umgebungen vereinheitlichen. Auch in diesem Bereich haben wir bei Juniper einiges vorzuweisen – wie Sie auf der KubeCon erfahren werden.

 

Da Anwendungsarchitekturen ein globales Ausmaß angenommen haben, wird die Bereitstellung einer soliden und sicheren Netzwerkinfrastruktur noch wichtiger – und noch komplexer –, denn sie muss in der Lage sein, sowohl Microservices als auch Multicloud-Umgebungen miteinander zu verbinden. Dazu gehört eine breite Palette an Lösungen für jede Größenordnung, von mehrschichtiger Sicherheit für einzelne Cluster bis hin zu umfassenden Schutzmaßnahmen und einer konsistenten Richtliniendurchsetzung für alle Bereiche und Funktionsebenen Ihrer Multicloud-Infrastruktur.

 

Vergessen Sie nicht Ihre älteren Systeme

 

Im Idealfall würden sämtliche Anwendungen auf Microservices basieren. In der Realität sieht es etwas anders aus, denn die von Cloud-nativen Anwendungen genutzten Services werden oft teils noch auf Mainframes bereitgestellt. Wie können Unternehmen also eine sichere, leistungsfähige, skalierbare und softwaredefinierte Infrastruktur für Anwendungen entwickeln, die wie ein Puzzle aus verschiedenen Servicearten bestehen, die wiederum auf unterschiedlichen Infrastrukturen und möglicherweise von mehreren, auf der ganzen Welt verteilten Anbietern bereitgestellt werden?

 

Und wie können sie ältere Services, Technologien und Infrastrukturen in neue VMs und Bare-Metal-Server integrieren und dort verwalten? Anwendungen werfen immer wieder Fragen auf, die sich mit Kubernetes und den damit verknüpften (hochmodernen, aber oft mit Einschränkungen verbundenen) Tools nicht lösen lassen. Eigentlich sollten heutzutage solche Tools und Technologien darauf ausgelegt sein, den Netzwerkbetrieb zu vereinfachen, nicht zu verkomplizieren. Es wird immer neue Tools geben, die Administratoren und Entwickler bei der Bewältigung neuer, Cloud-nativer Herausforderungen unterstützen. Doch die besten Tools werden diejenigen sein, die zudem den Netzwerkbetrieb vereinfachen. Um solche Lösungen zu entwickeln, müssen Anbieter und Unternehmen sowohl neue als auch ältere Bestände berücksichtigen und integrieren– und ihre Zusammenarbeit nachhaltig gestalten.

 

Lösungen für einfache Betriebsprozesse

 

Sie wissen bestimmt schon, wie die Juniper-Geschichte weitergeht, denn wir investieren bereits seit Jahren in erfolgreiche, leistungsfähige und skalierbare Systeme.

 

In unserem nächsten Blogbeitrag erklären wir, wie Juniper Betriebsprozesse vereinfacht, und nicht nur für Kubernetes-Nutzer, sondern für all unsere Kunden. Näheres zu den Cloud-nativen Lösungen von Juniper finden Sie auf juniper.net/cloud-native

0 Kudos