Kubernetes - Yay or Nay? Ein Technologieüberblick für Führungskräfte

Kubernetes hat die Betriebswelt im Sturm erobert. Selbst wir, die Menschen, die mit diesen Technologien arbeiten, wurden durch den schnellen Aufstieg zum Erfolg geblendet. Kein Wunder, dass sich IT-Entscheidungsträger noch mehr mit dem Thema auseinandersetzen. Sollten Sie in Kubernetes investieren? Ist das die Zukunft oder nur etwas, das vorübergehen wird? Sollten Sie sich an einen Dienstleister wenden oder sollten Sie den Betrieb selbst übernehmen? Wie funktioniert es überhaupt und sind Ihre Daten sicher? Das sind nur einige der Fragen, die wir täglich beantworten. Eine wahrhafte Herausforderung. Also, was hat es mit Kubernetes auf sich?

Früher war alles anders

Nehmen wir einmal an Sie haben einen Webshop. Da es sich um einen „Web“-Shop handelt, müsste dieser idealerweise über das Internet erreichbar sein. Das heißt der Computer, der diesen Webshop anzeigt, sollte über eine Internetverbindung verfügen.

In meiner Jugend hatte ich einen Computer in meinem Schlafzimmerschrank, aber seien wir ehrlich: Betriebssicher schaut anders aus. Wenn ein Unternehmen größer wird, wollen wir die Software, mit der wir Geld verdienen, auf einer betriebssicheren Basis betreiben. In den „alten Zeiten“ (vor 5 Jahren) haben wir Dinge ganz anders gehandhabt als heute. Die meisten Unternehmen haben sich damals einfach teure Hardware („Server“) gekauft oder diese gemietet und in einem Rechenzentrum untergebracht. Der Systemadministrator der Firma hat dann das Betriebssystem und die Umgebung für unsere Software installiert, die die Entwickler gebraucht haben. Die Entwickler ihrerseits haben den von ihnen geschriebenen Code auf dem Server in Betrieb genommen. Dieser Ansatz war zwar praktikabel, führte aber oft zu Konflikten zwischen der Betriebsmannschaft, dem Team, dass sich um den laufenden Betrieb kümmert, und den Entwicklern. Weil Server ziemlich kostspielig sind, entfällt aufgrund dieses Faktors oft die Einrichtung einer richtigen Testumgebung. Natürlich würde niemand dazu raten einfach eine Software online zu stellen die nie getestet wurde, da dies unter Umständen einen Betriebsausfall von mehreren Stunden oder sogar einen Datenverlust verursachen könnte.

Container

Der bis heute erfolgreichste Ansatz dieses Problem zu lösen ist, nennt sich „Container“. Eine Technologie die sich fundamental von den bisherigen Methoden unterscheidet. Beim Erstellen eines Containers nehmen wir die Laufumgebung einer Software und verpacken diese zusammen mit der Anwendung, beispielsweise mit der Webshop-Software. Dieses Container-Image kann dann sowohl als Entwicklungsumgebung verwendet werden, als auch in die Produktionsumgebung gestellt werden. Dies bietet mehrere Vorteile, von der Vereinfachung des laufenden Betriebes bis hin zu der Tatsache, dass man so die Anwendung in Isolation testen kann, ohne in teure Server investieren zu müssen. Der Nachteil ist, dass nicht alle Anwendungen mit Containern kompatibel sind. Das heißt, ältere Applikationen müssen oft händisch installiert werden und können nicht auf diese Weise automatisiert werden.

Hier kommt Kubernetes zum Einsatz

Bei der Beschreibung der Produktionsumgebung haben wir natürlich stark vereinfacht. Container besitzen natürlich keine magischen Fähigkeiten und haben dieselben Probleme wie traditionelle virtuelle Maschinen: Wenn der Rechner, der sie laufen lässt kaputt geht, sterben auch die Container. Orchestrierungssysteme wie Kubernetes lösen dieses Problem indem sie Container maschinenübergreifend verwalten. Wenn einer von mehreren Servern ausfällt, kann Kubernetes den Container auf einer anderen Maschine neu starten.
Dies ist jedoch kein Failover-Scenario im herkömmlichen Sinne, wie zum Beispiel bei VMWare. Es wird nicht derselbe Container zu einem neuen Rechner transferiert, sondern stattdessen wird eine neue Kopie des Containers gestartet. Dies hat hauptsächlich technische Gründe, kann aber beim richtigem Einsatz effizient sein.
Das kontinuierliche erneute Starten der Container bringt ein Problem mit sich: Was passiert mit den Daten? Manche Services wie Datenbanken brauchen einen Speicherplatz auf der Disk. So wie Kubernetes die Container verwaltet, bedeutet das, wenn ein Container auf einer anderen Maschine gestartet wird, werden die Daten nicht transferiert. Das heißt... außer man setzt eine Technologie namens Persistent Volumes ein.
Persistent Volumes ermöglichen es einen Datenspeicherplatz über das Netzwerk dem Container zuzuordnen. Um dies zu verwirklichen wird oft ein netzwerkbasiertes Storagesystem eingesetzt. Das kann entweder ein Network Block Storage (z.B. iSCSI, Ceph RBD) oder auch ein geteiltes Filesystem, wie GlusterFS sein. GlusterFS kommt auch als Standardlösung mit OpenShift, der Enterprise-Grade Kubernetes Lösung von RedHat, die viele Funktionen beinhaltet, die im „nackten“ Kubernetes nicht mitgeliefert sind.

Kubernetes ist schwierig

Kubernetes ist kein „Next-Next-Finish“ System. Es ist schwer in Betrieb zu nehmen und man braucht dafür erfahrene Köpfe. Für viele Firmen stellt dies eine große Herausforderung mit zahlreichen Lernphasen dar.
Cloud Provider bieten natürlich Kubernetes als fertigen Service an, aber selbst unter Einsatz dieser, sehe ich viele Developer mit Kubernetes kämpfen. Die alten Methoden, wie einfach auf dem Server einloggen und nachschauen, funktionieren nicht mehr und das entsprechende Fachwissen zur Fehlerbehebung steckt noch in den Kinderschuhen.
Aus meinen Gesprächen mit den genannten Developern schlussfolgere ich, dass Kubernetes ganz einfach die Ops-Welt überrollt hat, aber wir trotzdem unser funkelndes neues Spielzeug lieben. So ist Kubernetes auf dem Höhepunkt des Gartner Hype Cycle. Wir als IT Community haben noch ein ausgeprägtes Knowhow-Defizit und das Allgemeinwissen ist noch nicht ausreichend vorhanden, um selbst mit trivialen Fehlersituationen entsprechend umzugehen.


Sollten Sie es nutzen?

Wie jeder gute Berater sagen würde: „Es kommt darauf an“. Wenn Sie einen Cloud-Provider haben der Ihnen Kubernetes als Dienstleistung anbietet, könnte es von Vorteil sein, aber Ihre Developer müssen auch entsprechend vorbereitet sein. Sie müssen üben und das Wissen erlangen, wie man in dieser Umgebung ein stabiles und sicheres System aufbaut, Monitoring Systeme aufsetzt und vieles mehr.

Wenn Sie Kubernetes selbst betreiben wollen, sollten Sie darauf gut vorbereitet sein.
Seien Sie sich im Klaren, dass Sie dafür ein Team aus 2 bis 5 Personen benötigen, die sich nur auf diesen Bereich fokussieren.

Vielleicht haben Sie jetzt die Erwartung, dass ich Ihnen die ultimative Lösung oder ein Produkt verkaufen möchte, welches Ihr Ops-Leben so viel einfacher macht, aber das werde ich nicht tun.

Ops ist schwer, und als IT-Manager sollten Sie bei Ihren Entscheidungen immer den Wissensstand Ihres Teams berücksichtigen.
Wenn Sie sich allerdings für eine europäische Cloud Lösung interessieren, verkaufe ich Ihnen gerne die passende Lösung. Aber diese Entscheidung müssen Sie selbst treffen.


Quelle: https://read.wearedevelopers.com/kubernetes-yay-or-nay/