Kubernetes ist der De-facto-Standard für die Container-Orchestrierung und die derzeit angesagteste Technik überhaupt. Alle Manager:innen, IT-Berater:innen und neueren Kolleg:innen wollen es. Aber warum eigentlich? Was sind die Gründe dafür, dass man diese Technik überhaupt einsetzt? Ist es nur ein Hype? Wenn ja, wie lange wird dieser Hype anhalten? Und was sollten Sie besser jetzt wissen, wenn Sie Kubernetes bereits einsetzen oder planen, es in Zukunft zu nutzen. Wenn Sie mit Kubernetes noch gar nicht vertraut sind, lesen Sie bitte unsere Kubernetes-Fibel.
Um zu verstehen, wo der Einsatz von Kubernetes sinnvoll ist und welche Vorteile es bringt, werde ich Ihnen drei Beispiele vorstellen, bei denen ich Kubernetes in der Produktion gesehen habe:
- Kein Ärger mehr mit der IT-Plattform dank eines standardisierten Software-Rollouts
- Automatische Skalierung durch den cleveren Umgang mit Lastspitzen ohne Kostenexplosion
- Multi-Cloud mit geringen Verwaltungskosten nutzen
Standardisierte Softwarebereitstellung für multinationales Automobilunternehmen
Das besagte Multi-Milliarden-Dollar-Unternehmen nutzt Kubernetes als Plattform für die Produktionssoftware in allen Werken. Die internen Applikationen für die Verwaltung der Produktionslinien werden im weltweiten Forschungs- und Entwicklungszentrum entwickelt, in Container gepackt und anschließend in die lokalen Container-Repositories der einzelnen Produktionsstätten verschoben, um sie dann über Kubernetes in die verschiedenen Werke auszurollen.
Kubernetes ermöglicht dem Unternehmen dadurch eine einfache Bereitstellung von neuer Software. Da dem Entwickler-Team mit Kubernetes eine einheitliche Plattform über alle Werke hinweg zu Verfügung steht, muss es bei der Entwicklung neuer Software nicht mehr die Eigenheiten der unterschiedlichen IT-Architekturen an den verschiedenen Standorten berücksichtigen.
Früher stellt das Ausrollen von neuen Applikationen immer ein Problem dar, da die Rechen-, Netzwerk- und Speicherinfrastrukturen in den einzelnen Werken immer unterschiedlich und die Automatisierungstools zudem nicht standardisiert waren. Dadurch zogen selbst kleinste Unterschiede individuelle Roll-outs und Patches nach sich – und mehr Arbeit für das Entwickler-Team.
Da Kubernetes nicht nur eine Abstraktionsschicht für die Datenverarbeitung, sondern auch für Netzwerke und Speicher bereitstellt, gewann das Unternehmen beim Roll-out der Software in den Werken deutlich an Geschwindigkeit und Effizienz. Man darf jedoch auf der anderen Seite nicht den hohen Aufwand für den Betrieb von von Kubernetes unter den Tisch fallen lassen. Unterm Strich lohnt sich für das Unternehmen jedoch aufgrund seiner schieren Größe der Einsatz von Kubernetes.
E-Commerce-Webanwendung (oder Pferdewetten-Plattform) entsprechend der Nachfrage skalieren
Während der erste Anwendungsfall für mich neu war, habe ich über den nächsten Fall schon vor längerer Zeit gelesen. Der Kunde hatte früher eine monolithische Anwendung im Betrieb. Doch jedes Mal, wenn ein Sale stattfand, hatte die E-Commerce-Webanwendung Leistungsprobleme. Dadurch verlor das Unternehmen potenzielle Verkäufe, weil die Website nicht mehr richtig funktionierte.
Um dieses Problem zu lösen, migrierte das Unternehmen zu einer Kubernetes-Microservices-Architektur mit dem Ziel, von den nativen Skalierungstools von Kubernetes zu profitieren. Dabei handelt es sich um die automatische Skalierung von Nodes, speziell um das Hinzufügen von Worker Pods, wenn der Cluster nicht über genügend Rechenleistung oder Arbeitsspeicher verfügt. Eine weitere Funktion ist die automatische und horizontale Pod-Skalierung. Sie erzeugt neue Pods für die Front-End-Anwendung, die den Kunden bedient, sobald die CPU-Auslastung aller Pods dieser Anwendung 80 % erreicht.
Auf diese Weise kann das Unternehmen in Stoßzeiten wie dem Black Friday alle Benutzer:innen mit Inhalten versorgen – und zumindest die IT-Abteilung wird nicht mehr für entgangene Umsätze verantwortlich gemacht.
Das IT-Team muss sich auch keine Sorgen mehr über unerwartet hohen Datenverkehr machen, etwa wenn ein Sale ohne ihr Wissen stattfindet, da Kubernetes ohne menschliche Interaktion skaliert. Solange der Datenverkehr sich im normalen Bereich bewegt, was die meiste Zeit der Fall ist, lässt sich die Plattform durch die Verwendung sogenannter reservierter Instanzen verwalten. Für diese hat sich das Unternehmen für eine Laufzeit von mehr als einem Jahr bei seinem Cloud-Anbieter verpflichtet. Sämtliche Spitzen fangen hingegen On-Demand-Instanzen auf, was sehr kosteneffizient ist.
Ich habe genau die gleiche Geschichte von einer Plattform für Pferdewetten gehört: Dessen Problem bestand darin, dass an den Wochenenden sehr viel und in der Nacht kein Datenverkehr auftrat. Um zu skalieren, musste der Anbieter eine weitere große Maschine betreiben, deren Hoch- und Herunterfahren viel Zeit in Anspruch nahm und eine Menge Overhead verursachte.
Die Umstellung auf eine Microservice-Architektur und Kubernetes führte letztendlich zu großen Einsparungen bei den IT-Infrastrukturkosten, auch wenn die Kosten für die Berater, die der Wettanbieter für Kubernetes benötigte, enorm anstiegen.
Die Multi-Cloud-Lösung
Damals, als ich noch als Unternehmensberater gearbeitet habe, war Cloud noch ein neues, heißes Thema. Die Hauptsorge lautete häufig: Wie kann ich herstellerunabhängig bleiben? Unsere Antwort darauf war, eine Multi-Cloud-Strategie zu verfolgen, obwohl wir keine Ahnung hatten, wie sich eine solche überhaupt umsetzen ließ.
Das waren damals die Zeiten, als auch Pivotal mit seiner Cloud-Foundry-Lösung gehyped wurde. In der Zwischenzeit sind wir schlauer und wissen, dass die Lösung seit der Übernahme von Pivotal durch VMware im Jahre 2019 und anschließenden Eingliederung in VMware Tanzu nie richtig in Schwung gekommen ist. Auf dem Cloud Foundry Git ist jedenfalls nicht mehr viel los. Mit VMware Tanzu ist schließlich auch das Wunschkind von Kubernetes und vSphere auf dem Markt – als ob die Komplexität eines der beiden Tools nicht schon völlig ausreichen würde …
Kubernetes ist die Antwort auf eine solche herstellerunabhängige Multi-Cloud-Strategie. Mit Kubernetes können Sie Anwendungen auf Ihrer eigenen Infrastruktur bereitstellen und sie fast nahtlos auf AWS, Azure oder Google verlagern – und umgekehrt. Der Teufel steckt natürlich im Detail und es gibt Unterschiede in der Funktionsweise von Kubernetes auf den verschiedenen Plattformen. Hier kommen dann Tools wie Rancher oder OpenShift ins Spiel, die die Verwaltung von Kubernetes deutlich vereinfachen.
Um ehrlich zu sein, habe ich dies jedoch nur bei wirklich großen Unternehmen gesehen, bei denen die Risikominderung ein wichtiges Thema ist und die allgemeinen Kosten für Kubernetes und Multi-Cloud im Vergleich zu den allgemeinen IT-Ausgaben gering sind. Und wenn man die Kosten von Kubernetes im Vergleich zu selbst entwickelten Lösungen für eine Multi-Cloud-Umgebung bedenkt, ist es wahrscheinlich immer noch ein Schnäppchen.
Kubernetes bietet noch einige weitere Vorteile, die nicht nur für einen bestimmten Anwendungsfall gelten, sondern das Leben insgesamt erleichtern. Dazu gehören die Selbstheilungsfähigkeiten von Kubernetes.
Egal welche Art von Infrastruktur Sie haben, irgendwann wird Ihre Recheninfrastruktur ausfallen oder eine Ausfallzeit haben. Ganz gleich, ob Kubernetes auf Bare Metal, selbst verwalteten VMs oder bei einem Cloud-Anbieter läuft, nichts ist vor einer Kernel-Panik, einem Hardware-Ausfall oder einfach nur vor dem Blue Screen of Death sicher.
Wenn ein Knoten nicht mehr verfügbar ist, startet Kubernetes die Pods einfach auf einem anderen gesunden Node neu. Dadurch sind Ihre Anwendungen schnell wieder verfügbar, ohne dass Sie dafür einen Finger rühren müssen. Zumindest in der Theorie.
Kubernetes ist großartig – eignet sich aber nicht immer
Sie sehen also: Kubernetes hat tatsächlich einige großartige Anwendungsfälle. Wenn Sie sich und Ihr Unternehmen in einem der vorgestellten Beispiele wiedererkennen, sollten Sie es ausprobieren. Bedenken Sie aber, dass es nicht die Lösung für alle Probleme ist – und genau hier sehe ich viele Unternehmen auf dem Holzweg.
Der Aphorismus „Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel“ lässt sich in der modernen IT-Welt problemlos auf Kubernetes (und das sehr eng damit verbundene Konzept der Micro-Services) übertragen. Nur weil jeder darüber spricht und die Technik empfiehlt, heißt das nicht, dass Sie diese auch für alles verwenden sollten. Warum? Bedenken Sie bei einer solchen Entscheidung immer die Größe Ihres Unternehmens und den Aufwand, der mit einem so komplexen Tool wie Kubernetes verbunden ist.
Brauchen Sie wirklich eine automatische Skalierung?
Fragen Sie sich bei der Entscheidung für und wider Kubernetes, ob Ihre Anwendung wirklich eine automatische Skalierung benötigt, etwa weil Sie in kurzen Zeiträumen massive Auslastungsspitzen haben. Oder ist in Ihrem Fall nicht doch eine größer dimensionierte VM die billigere Lösung? Sie sollten dabei nämlich immer berücksichtigen, dass ein echter Kubernetes-Cluster mehrere Worker Nodes für Redundanz benötigt. Betreiben Sie diesen vor Ort, benötigen Sie außerdem mehrere Control Plane Nodes (idealerweise 3).
Müssen Sie eine gut geölte Maschine neu erfinden?
Sie betreiben Ihre IT-Infrastruktur selbst und verfügen sogar über eine hervorragende Virtualisierungsinfrastruktur mit einem hohen Maß an Automatisierung? Dann können Sie wahrscheinlich ohnehin ohne große Probleme Software in Ihrer Infrastruktur implementieren. Eine solche, perfekt geölte Maschine müssen Sie dementsprechend auch nicht neu erfinden.
Ist Ihre Anwendung bereits hochverfügbar?
Sind Sie sicher, dass Sie wirklich eine 99,999%ige Verfügbarkeit Ihrer Anwendung brauchen? Oder Ihre Anwendung nicht ohnehin schon die Kriterien für Hochverfügbarkeit?
Mind the (Knowledge) Gap
Was die meisten Unternehmen darüber hinaus zu vergessen scheinen, ist die Kubernetes-Kenntnislücke. Wenn Sie keine Kubernetes-Expertise im Haus haben, erwarten Sie nicht, dass Sie Kubernetes-Experten auf dem Markt finden, die nach einem Job suchen. Denn dann sind Sie bereits zu spät dran und werden wahrscheinlich auf externe Kubernetes-Berater zurückgreifen müssen (die ebenfalls eine knappe Ressource sind).
Kubernetes-Himmel statt -Hölle
Das sind unterm Strich viele Fakten, die Sie berücksichtigen müssen, aber genau da fängt der Spaß mit Kubernetes an. Nehmen wir an, Sie haben sich auf Ihrem Weg in eine strahlende Zukunft mit Microservices für Kubernetes entschieden. Damit Sie am Ende im Kubernetes-Himmel und nicht in der -Hölle landen, empfehlen wir Ihnen, sich intensiv mit dem Thema Kubernetes-Monitoring auseinanderzusetzen.