ake1150 - stock.adobe.com

Kubernetes: Container per Service oder selbst orchestrieren?

Kubernetes dient häufig als Basis für das Containermanagement. Dies liegt unter anderem an der schnellen Integration und der Möglichkeit Applikationen zu automatisieren.

Wo früher auf ausgeprägte monolithische Angebote gesetzt wurde, liegt heute der Fokus auf Lösungen, die schnell implementiert und einfach zu handhaben sind. Diesem Anspruch können die angebotenen Dienste aus der Cloud mittlerweile gerecht werden.

Dazu gehören Infrastructure-, Platform- und Software-as-a-Service-Lösungen (Iaas, PaaS, SaaS). Zusätzlich hat sich der Fokus auf Microservices-Angebote verlagert. Diese Entwicklungsmethode für Softwaresysteme soll dazu dienen, Anwendungen aus einer Sammlung kleiner Dienstprogramme zu entwickeln. Durch gut definierte Schnittstellen kann jedes Dienstprogramm oder Modul unabhängig von den übrigen eingesetzt und bearbeitet werden. Unternehmen können agiler arbeiten – bereits ein kleines Team kann ausreichen – und die Software ist wesentlich skalierbarer.

Microservices mit Containern ausführbar machen

Dadurch, dass Microservices unabhängig voneinander und vom gesamten System entwickelt werden, wird die Komplexität reduziert. Jedes Modul kann von verschiedenen Teams zur gleichen Zeit verändert und bearbeitet werden – ohne Downtime. Der gesamte Entwicklungsprozess wird agiler und erfordert weniger Koordination. Selbst die Programmiersprache kann zwischen den Microservices variieren.

Was fehlt, sind jedoch Parameter und Abhängigkeiten, wie Systembibliotheken und Laufzeitumgebungen, damit die einzelnen Services miteinander ausführbar sind. Hier kommt Containertechnologie ins Spiel. Die Anwendung sowie alle benötigten Systemkomponenten werden in einer Datei zusammengefasst, dem Container. Die Bereitstellung wird dadurch einfacher und die Anwendung auf jeder Plattform, die Containertechnologie unterstützt, möglich.

Entwickler können die jeweiligen Anwendungen also auf verschiedenen Umgebungen nutzen und nach Belieben hin- und herschieben. Dadurch, dass Container kein eigenes, sondern das Betriebssystem des Hosts nutzen, sind sie deutlich schlanker und starten schneller als virtuelle Maschinen.

Systeme zur Containerorchestrierung

Da sich das Containerökosystem eines Unternehmens meist schnell entwickelt und die Anzahl der Container steigt, gewinnt die Orchestrierung an Bedeutung. Die Container der meisten Anwendungen sind außerdem auf verschiedenen virtuellen und physischen Hosts verteilt. Sie können sich im eigenen Rechenzentrum oder in einer Cloud-Umgebung befinden. Der Einsatz einer Orchestrierungsplattform zur automatischen Einrichtung, Skalierung und des Betriebs ist in diesen Fällen empfehlenswert.

Eine der bekanntesten Orchestrierungslösungen ist das Open-Source-System Kubernetes. Ursprünglich wurde die Technologie von Google veröffentlicht und nun stetig von zahlreichen Entwicklern weiterentwickelt. Die von Kubernetes bereitgestellte Managementumgebung macht es möglich Deployment, Betrieb, Wartung sowie Skalierung der containerisierten Anwendungen zu automatisieren und zu vereinfachen.

Kubernetes gridscale
Abbildung 1: Der Kubernetes Master ist das System, das für die Steuerung der Container-Cluster verantwortlich ist.

Der sogenannte Kubernetes Master ist in diesem Falle das System, welches für die Steuerung der Container-Cluster verantwortlich ist (siehe Abbildung 1). Zur effizienten Verwaltung können Container in Pods zusammengefasst werden und teilen sich dadurch Ressourcen wie die IP-Adresse oder den Speicherplatz.

Ausgeführt werden die Pods auf physischen oder virtuellen Maschinen, genannt Nodes. Die Automatisierung erfolgt dadurch, dass der Master die Befehle des Administrators empfängt und diese an die Nodes weitergibt. Es wird automatisch entschieden, welcher Node für die jeweilige Aufgabe geeignet ist.

Serviceangebote zur Kubernetes-Integration

Die Kubernetes-Technologie bietet Entwicklerteams die Möglichkeit, eine eigene Installation aufzusetzen und ist durch ihren Open-Source-Charakter frei zugänglich. Eine große Anzahl an Tutorials zum Thema ist unter anderem auf der offiziellen Website verfügbar. Die Entwicklerplattform GitHub enthält ebenfalls zahlreiche Einträge zur Erstellung einer eigenen Kuberneter-Installation.

Dennoch verfügt nicht jedes Unternehmen über ein großes Entwicklerteam und nicht jedes Entwicklerteam über das nötige Know-how. Besonders wenn es um spezifische Störungen oder die individuelle Weiterentwicklung geht, können unerfahrene Entwickler an ihre Grenzen stoßen.

Abhilfe können Container-as-a-Service-Angebote von Cloud Providern schaffen. Der Service-Provider ist dabei verantwortlich für die Skalierung und Verfügbarkeit der Kubernetes-Infrastruktur. Die Angebote können sich jedoch stark unterscheiden und Unternehmen müssen nach ihren jeweiligen Bedürfnissen auswählen. Von automatisierten Komplettlösungen, die abgestimmte Tools in einem Paket enthalten, bis zu Resellern, bei denen das Unternehmen selbst für die Konfiguration und Auswahl der Tools verantwortlich ist. Neben großen Konzernen wie Amazon unterstützen auch kleinere Provider die Containerorchestrierung.

Henrik Hasenkamp, gridscale

„Die Kubernetes-Technologie bietet Entwicklerteams die Möglichkeit, eine eigene Installation aufzusetzen und ist durch ihren Open-Source-Charakter frei zugänglich.“

Henrik Hasenkamp, gridscale

Dazu gehört der Service Managed Kubernetes des IaaS- und PaaS-Anbieters gridscale. Load Balancer, persistenter Speicher sowie Scheduler gehören zu den wichtigsten Einstellungen in eine Kubernetes-Architektur und sind bei Managed Kubernetes dem Workload entsprechend vorgewählt.

Je nach Mitarbeiterkompetenz, Offenheit gegenüber Cloud-Angeboten und den verfügbaren wirtschaftlichen Ressourcen können unterschiedliche Lösungsansätze die beste Wahl sein. Besonders bei Ressourcenknappheit, ein Aspekt der viele Unternehmen an der Integration hindert, können Managed Services eine gute Investition und einfache Lösung sein.

Über den Autor:

Als CEO von gridscale verantwortet Henrik Hasenkamp die Strategie und Ausrichtung des europäischen Infrastructure- und Platform-as-a-Service-Anbieters gridscale, der mit seiner innovativen Technologie die Basis für anspruchsvolle Cloud-Lösungen schafft. In einem Whitepaper diskutiert Hasenkamp die Vorteile und Herausforderungen beim Einsatz von Managed Kubernetes.

Bereits bevor er gridscale 2014 mit ins Leben rief, war er im Hosting-Geschäft zu Hause. So sammelte er Erfahrung bei der PlusServer AG, beim IaaS-Provider ProfitBricks, der Vodafone-Geschäftssparte Cloud & Hosting Germany und der Host Europe Group.

 

Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder.

Erfahren Sie mehr über Softwareentwicklung