zhu difeng - Fotolia

Wie Kubernetes die Anwendungsentwicklung revolutioniert

Container ersetzen inzwischen häufiger virtuelle Maschinen. Neben AWS, Microsoft und Google wird Kubernetes daher auch von VMware und SUSE vorangetrieben.

Nahezu im Wochentakt tauchen Meldungen auf, dass Softwareanbieter ihre eigenen Plattformaktivitäten zugunsten von Kubernetes (k8s) aufgeben. Die jüngste Ankündigung kam Anfang Oktober von SUSE: Der Linux-Anbieter hat die Entwicklung seiner OpenStack Cloud eingestellt und konzentriert sich nun auf die Container-Orchestrierungsplattform Kubernetes.

Im 2019 State of the Cloud Report des SaaS-Anbieters RightScale (2018 von Flexera akquiriert) heißt es, dass mittlerweile gut die Hälfte der befragten Unternehmen Kubernetes einsetzen. Laut der Datenbank des B2B-Beratungsunternehmens enlyft setzen weltweit über 10.000 Firmen auf Kubernetes. Banken und Versicherungen gehören dabei zum größten Anwenderkreis.

Konkurrenz setzt auf Kubernetes

Was die Anbieterseite betrifft, so haben neben SUSE inzwischen auch zahlreiche andere Anbieter und Cloud Provider, wie AWS und Microsoft Azure ihren Support für Kubernetes ausgebaut. Google, die Kubernetes ursprünglich entwickelten, unterstützen das System naturgemäß seit den Anfängen. Aber auch VMware und die Cloud Foundry Foundation, die lange versucht haben, mit der Kubernetes-Plattform in Konkurrenz zu treten, unterstützen inzwischen Kubernetes.

„Wir wollen der größte Enabler von Kubernetes werden“, sagt Joe Beda, Principal Engineer bei VMware. Bekannt wurde Beda durch seine Arbeit bei Google, bei der er Kubernetes mitentwickelt hat. Die Anwendung wurde 2015 als Open Source der Cloud Native Foundation unter dem Dach der Linux Foundation übergeben, wo sie weiterentwickelt wird und unter der Apache License 2.0 verfügbar ist.

Bedas Aufgabengebiet ist heute die Umstellung von VMware-Produkten auf Kubernetes. „In Zukunft werden alle unsere virtuellen Maschinen und Container unter einer einheitlichen Kubernetes-Plattform erstellt, betrieben und gemanagt“, sagt er.

Die Zeit der Server-Virtualisierung in ihrer ursprünglichen Form geht damit dem Ende entgegen. Konsequenterweise hat sich VMware von seinen Ursprüngen und den Kernkompetenzen verabschiedet.

Container versus virtuelle Maschinen (VM)

Um das zu verstehen, müssen die Unterschiede zwischen einer virtuellen Maschine (VM) und einem Container erläutert werden: Eine VM enthält in gekapselter Form alles, was zum Betrieb einer Anwendung erforderlich ist. Das reicht von der Anwendungssoftware über Datenbanken und Netzwerkprogramme bis zum Betriebssystem. In einem einzigen physischen Server können so viele VMs parallel betrieben werden, wie an Hardwareressourcen zur Verfügung stehen. Die Verwaltung der VMs erfolgt über einen Hypervisor.

Abbildung 1: Die Übersicht zeigt, welche Tools welche Container- und Orchestrierungsanforderungen abdecken.
Abbildung 1: Die Übersicht zeigt, welche Tools welche Container- und Orchestrierungsanforderungen abdecken.

Container ähneln virtuellen Maschinen und werden daher häufig als VM-Light bezeichnet. Auch hier ist eine Anwendung mit vielen anderen Softwarebausteinen gekapselt. Der entscheidende Unterschied ist, dass Container nicht alles enthalten, was zum Betrieb erforderlich ist, zum Beispiel das Betriebssystem und die Netzwerkkomponenten. Diese werden nur einmal pro Server implementiert und von allen darauf befindlichen Containern parallel verwendet.

Der große Vorteil ist, dass Container wesentlich kleiner sind als virtuelle Maschinen, was eine deutlich bessere Ausnutzung der Systemressource verspricht. Größter Nachteil ist, dass alle Container einer Gruppe mit demselben Betriebssystem und derselben Netzwerk- und Middleware arbeiten müssen.

Aus der Not geboren

Diese Vorgabe einer einheitlichen Systembasis geht auf die Anfangszeiten des Cloud Computing zurück. Damals hatten viele IT-Leiter erhebliche Bedenken bezüglich Performance, Datenhoheit und Sicherheit.

Die Folge war, dass sich die Cloud zunächst nur als ein Tummelplatz für Entwickler etablieren konnte. Das heißt, die Entwicklungsumgebung war von vorherein nicht als spätere Betriebsplattform geplant, wodurch die Anwendungen weitestgehend unabhängig von der zugrunde liegenden Infrastruktur konzipiert und entwickelt werden mussten.

Technologisch war das eine neue Herausforderung, denn parallel kristallisierte sich agile Entwicklungsmethoden heraus, die eine kontinuierliche und schnelle Koppelung von Entwicklung und Deployment zum Ziel haben (Stichwort DevOps).

Mit Containern und Serverless-Programmen lassen sich diese Probleme lösen, denn Anwendungen lassen sich auf jeder beliebigen Infrastruktur entwickeln und betreiben, sofern die Basissysteme identisch sind. Rapid Development und Deployment und ein problemloses Verschieben von Anwendungen zwischen dem internen Rechenzentrum und Cloud-Umgebungen sind auf diese Weise im großen Maßstab möglich.

Massive Skalierbarkeit – komplexe Kontrolle

Da Container hardwareunabhängig sind, können sie beliebig oft parallel gestartet werden – was eine unbegrenzte Skalierbarkeit schafft. Laut Aparna Sinha, Director of Product Management bei Google, werden in ihrem Unternehmen bis zu 6.600 Container pro Sekunde gestartet, von denen die meisten nur wenige Minuten aktiv sind.

Abbildung 2: Warum sich Anwender für Containermanagementlösungen entscheiden
Abbildung 2: Warum sich Anwender für Containermanagementlösungen entscheiden

Doch die neuen Vereinfachungen beim Deployment und dem Betrieb der Anwendungen kommen nicht ohne Einschränkungen. Zum Beispiel ist die Performance bei Containern wesentlich schwieriger zu kontrollieren.

Die auf Application Performance Management (APM) spezialisierten Anbieter Datadog und New Relic bieten hierzu Ergänzungen zu ihren Monitoring-Plattformen an. Doch es gibt auch Open Source Tools für die Performance-Überwachung von Kubernetes-Clustern. Hierzu gehören unter anderen kubelet, cAdvisor und kube-state-metrics.

Kubernetes löst aber nicht nur Deployment- und Operations-Probleme. Inzwischen hat die Plattform zum Umdenken geführt. Waren es ursprünglich die technologischen Voraussetzungen der Infrastruktur, die bei der Planung neuer Anwendungen die größte Rolle spielten, ist dieser Punkt heute weniger bedeutsam.

Stattdessen steht der Geschäftsnutzen im Fokus neuer Softwareprojekte. Cloud-native Programme, bei denen mit Hilfe von Kubernetes die Softwarecontainer orchestriert werden sowie eine softwaredefinierte Infrastruktur sind heute State-of-the-Art und haben ein komplettes Umdenken bei Planung, Entwicklung und Betrieb von neuen Anwendungen geführt.

Nächste Schritte

Storage-Management für Kubernetes-Anforderungen.

Kubernetes Schritt für Schritt richtig absichern.

Kostenloses E-Handbook: Software mit Kubernetes entwickeln.

Erfahren Sie mehr über Softwareentwicklung

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close