Container-Orchestrierung mit Kubernetes: hart Steuerbord

Die zentrale Rolle innerhalb des Clusters kommt dem Master Node zu. Dieser ist für die Verwaltung des Clusters verantwortlich, speichert die Informationen über die Mitglieder des Clusters und überwacht diese. Wenn ein Knoten ausfällt, kümmert sich der Master Node darum, die Arbeitslast des ausgefallenen Knotens auf einen anderen zu verschieben oder auf andere zu verteilen.

Nicht nur ist die Koordination dieser vier wesentlichen Module eines Kubernetes-Clusters alles andere als trivial. Die einzelnen Elemente weisen zudem eine nicht zu unterschätzende interne Komplexität auf. Ein Master Node beispielsweise umfasst seinerseits wiederum einen API-Server, einen Controller Manager, den ETCD und einen Scheduler.

Auf dem Master Node befindet sich eine Komponente, die die APIs bereitstellt, mit deren Hilfe Anwendungen miteinander kommunizieren können. Sie bildet das Front-End für die Kubernetes-Kontrollebene und skaliert horizontal, das heißt, sie skaliert mit der Anzahl bereitgestellter Instanzen. Die Benutzer, Verwaltungsgeräte und Befehlszeilenschnittstellen sprechen alle mit dem API-Server, um mit dem Kubernetes-Cluster zu interagieren. Der ETCD ist ein konsistenter und hochverfügbarer Schlüsselwertspeicher (Key value Store). Er speichert die Konfigurationsinformationen, die von jedem der Knoten im Cluster verwendet werden können und nur für den Kubernetes-API-Server direkt zugänglich ist, da er einige sensible Informationen enthalten kann.

Der Controller Manager ist eine Komponente auf dem Master Node, auf dem verschiedenen Controller laufen. Dazu gehören der Node Controller, der für die Überwachung der Nodes verantwortlich ist, der Endpoints Controller der die genutzten Dienste mit den relevanten Pods verknüpft und der Replication Controller, der für die richtige Anzahl von Pods für jedes Replikationsobjekt (Replica) im System verantwortlich ist.

Der Scheduler schließlich ist ein Dienst des Kubernetes-Masters, der für die Verteilung der Arbeitslast oder Container auf mehrere Knoten verantwortlich ist. Er behält die Auslastung auf den Cluster-Knoten im Auge und platziert die Arbeitslast auf den verfügbaren Ressourcen. Anders ausgedrückt, handelt es sich um den Mechanismus, der für die Zuweisung von Pods zu verfügbaren Knoten verantwortlich ist.

Das Gesagte führt vor Augen, über welche Komplexität die einzelnen Module eines Kubernetes-Clusters verfügen. Nicht nur müssen all diese Komponenten eingerichtet und ihre Beziehungen untereinander geregelt werden. Darüber hinaus fallen vergleichsweise traditionelle Unterhaltsarbeiten für das IT-Team an. Ein großer Teil dieser Arbeiten besteht aus der Verwaltung des Lebenszyklus von Knoten, der Bereitstellung neuer Hosts und daraus, die Hosts mit den neuesten Betriebssystem-Patches und Container-Laufzeitversionen auf dem aktuellen Stand zu halten.

Kubernetes auf Autopilot

Addiert man zu dieser Komplexität noch die Knappheit qualifizierter IT-Fachleute hinzu, drängt sich die Alternative auf, Kubernetes als Managed Service zu nutzen. Wird Kubernetes als Managed Service genutzt, profitiert ein Unternehmen von allen Vorteilen der Technologie, ohne durch die zugrundeliegende Komplexität überfordert zu werden.

Auch bei der Nutzung von Kubernetes als Manged Service gibt es einige Dinge zu beachten. In erster Linie gilt es, wie bei anderen Cloud-Diensten auch, auf eine verlässliche Infrastruktur zu achten, welche die Einhaltung der DSGVO wirklich gewährleisen kann. Mit anderen Worten: einen bewährten Provider aus der EU mit rein europäischem Backbone.

Unternehmen auf der Suche nach einem Anbieter, der Kubernetes als Managed Service anbietet, müssen sich überlegen, welche Prozesse sie in die Verantwortlichkeit des Providers legen wollen. Dabei gilt es die Bequemlichkeit eines Komplettservices mit den Vorteilen abzuwägen, die sich ergeben, wenn man bestimmte Prozesse in eignen Händen hält. Dabei hat sich ein gewisser „Sweet Spot“ ergeben, eine Kombination, die als Best Practice für die meisten Unternehmen gelten kann, die Kubernetes als Managed Service nutzen wollen.

Im Rahmen dieser Best Practice übernimmt der Provider die Installation und Administration der Kubernetes Plattform. Das ist die Minimalanforderung, um die oben genannte Komplexität bei Aufbau und Betrieb eines Kubernetes-Clusters zu vermeiden. Darüber hinaus sollte der Provider das Backup und Scaling der Kubernetes-Plattform übernehmen sowie die Bereitstellung der Rechenressourcen für die Nodes. Das Deployment sowie die Konfiguration für die Skalierung der Anwendungen muss in jedem Fall in Händen des Unternehmens selbst bleiben.

Nicht zuletzt sollte man darauf achten, durch die Nutzung von Kubernetes als Managed Service nicht wichtige Vorteile der Technologie zu verlieren, nämlich Flexibilität und Wahlfreiheit. Manche Anbieter von Managed Kubernetes Services lassen ihren Kunden keine oder kaum eine Wahl bei den zu verwendenden Betriebssystemen und Container-Software. Auch bei Lösungen, die Kubernetes ergänzen, gilt es, sich die Wahlfreiheit zu erhalten. Das heißt, der Anbieter sollte eine Auswahl an Lösungen zum Beispiel für Container Lifecycle Management, Monitoring, Backup, CI/CD, Security sowie Logging & Registration bereitstellen.

Container-Technologie ist aktuell der wahrscheinlich wichtigste Trend in der Cloud. Die konsequenteste Weise, diese Technologie zu nutzen, ist ihr Einsatz als Managed Service. Andernfalls handelt sich eine IT-Abteilung wahrscheinlich mehr Probleme ein, als sie durch Kubernetes löst.