ArtikelVirtualisierung

Container-Orchestrierung mit Kubernetes: hart Steuerbord

Autor/Redakteur: Denis Arnst, Cloud Solution Architect bei A1 Digital/gg

Die Container-Technologie ist die zu Ende gedachte Systemvirtualisierung. Ihr Einsatz wird immer mehr zum Mittel der Wahl in der Cloud. Ein Blick auf die Arbeitsteilung zwischen Entwickler und Systemadministrator ist aufschlussreich, will man die Popularität der Technologie begreifen. Bei der herkömmlichen Bereitstellung einer neuen Anwendung sind die Entwickler sehr stark von den Systemadministratoren abhängig. Letztere müssen dafür sorgen, dass der neuen Anwendung die benötigten Ressourcen wie Sourcecode, Systembibliotheken, System-Tools und Laufzeitumgebung zur Verfügung stehen. Durch Einsatz der Container-Technologie können Entwickler diesen Job selbst übernehmen. Sie packen alle benötigten Komponenten zusammen mit der Anwendung in einen Container und liefern diesen an die System-Administratoren. Diese müssen den fraglichen Container lediglich noch auf einer geeigneten Plattform ausführen.

Bild: A1 Digital

Es erscheint so, als könnten System-Administratoren sich nun lässig zurücklehnen. Das trifft allerdings umso weniger zu, desto größer die Anzahl der Container wird. Der eigentliche Einsatz von Containern ist manuell einfach zu erledigen, jedoch wird die Orchestrierung einer größeren Anzahl von Containern ohne entsprechende Hilfsmittel schnell zur Herausforderung. Eine solche Orchestrierung wird nicht nur durch die reine Anzahl von Containern erforderlich, sondern beispielsweise auch, um Funktionen wie Lastverteilung oder den Start zusätzlicher Container-Klone zu ermöglichen, die helfen Spitzenlasten abzufangen.

Chefsteuermann Kubernetes

Das beliebteste Hilfsmittel zur Container Orchestrierung ist Kubernetes, auch bekannt als K8s. Mit diesem System können Systemadministratoren die Bereitstellung, Skalierung und Verwaltung von Containern automatisieren. Kubernetes ist außerordentlich leistungsstark. Die Plattform ermöglicht unter anderem:

  • Lastverteilung: Wenn ein Container (zu) starken Datenverkehr erfährt, ist Kubernetes in der Lage, die Last auszugleichen und den Netzwerkverkehr so zu verteilen, dass der gelieferte Service stabil bleibt. Bei Bedarf kann Kubernetes auch einen zusätzlichen Container-Klon starten, um die zusätzliche Last abzufangen.
  • Speicherbereitstellung: Mit Kubernetes können Systemadministratoren einem Container automatisch den benötigten Speicher zur Verfügung stellen. Dabei spielt es keine Rolle, ob es sich um eine Speicherinfrastruktur im eigenen Rechenzentrum, die Public Cloud oder eine Hybridform handelt.
  • Selbstreparatur: Kubernetes kann „gecrashte“ Container neu starten, Container ersetzen oder Container abschalten, die nicht innerhalb vorher bestimmter Parameter arbeiten.
  • Automatische Rollouts und Rollbacks: Systemadministratoren können Kubernetes beispielsweise so konfigurieren, dass es neue Container für ein Deployment erstellt, bestehende Container entfernt und alle deren Ressourcen in einen neuen Container übernimmt.

Kubernetes stellt eine enorme Arbeitserleichterung für Systemadministratoren dar. Mit der Plattform lässt sich ein bisher kaum vorstellbares Niveau an Automatisierung erreichen. Es gilt allerdings zu bedenken, dass der Umgang mit Kubernetes umfangreiches Spezialwissen erfordert und Systemadministratoren umlernen müssen, weil keiner der ihnen bekannten Prozesse wie die Bereitstellung von Rechen-, Netzwerk- oder Speicherressourcen auf dieselbe Weise verläuft wie in traditionellen Umgebungen. Und selbst wenn das IT-Team über das erforderliche Spezialwissen verfügt, sind Aufbau und Unterhalt des benötigten Kubernetes-Clusters alles andere als eine Kleinigkeit.

Wer steuert den Steuermann?

Der wesentliche Punkt, weshalb Einsatz und Unterhalt eines Kubernetes-Clusters sich als komplexe Herausforderung erweisen kann ist, schlicht gesagt, dass auch Kubernetes natürlich nicht im luftleeren Raum stattfindet und auf eine dezidierte (Hardware-) Infrastruktur angewiesen ist. Auf vergleichsweise abstrakter Ebene sind vor allem Pods, Nodes, Master Nodes und Cluster selbst zu nennen.

Ein Pod ist die kleinste Einheit, die von Kubernetes verwaltet werden kann. Es handelt sich um eine logische Gruppe mit einem oder mehreren Containern, die dieselbe IP-Adresse haben. Ihr wesentlicher Zweck besteht darin, die gemeinsam genutzten Prozesse zu unterstützen, wie zum Beispiel einen Anwendungsserver und seinen lokalen Cache. Ein Node oder Knoten ist eine physische oder virtuelle Maschine, auf der Kubernetes installiert ist. In einem Knoten werden die Container innerhalb der Pods von Kubernetes gestartet. Ein Cluster ist eine Gruppe von Knoten, die aneinandergekoppelt sind. Selbst wenn ein Knoten ausfällt, ist die entsprechende Anwendung weiterhin von den anderen Knoten aus erreichbar. Die Verwendung mehrerer Knoten hilft zudem dabei, die Rechenlast zu verteilen.

Die mobile Version verlassen
%%footer%%