Das „Salz in der Suppe“ – Cloud native, Kubernetes und Unikernels (Teil 5) Neue Technologien für Managed Cloud-Umgebungen

Autor / Redakteur: Dr. Dietmar Müller / Florian Karlstetter

Nachdem wir die Geschichte der Cloud, den aktuellen Status quo, die Einsatzszenarien sowie die verschiedenen Service Provider genauer angesehen haben, können wir nun endlich über das Salz in der Cloud-Suppe sprechen: Die Verfahren, mit denen Workloads und Anwendungen zwischen den verschiedenen Clouds hin- und herbewegt werden können. Dies ist der aktuell spannendste Entwicklungsstrang im Cloud Computing.

Anbieter zum Thema

Container und Unikernels: Der aktuell spannendste Entwicklungsstrang im Cloud Computing sind Verfahren, mit denen Workloads und Anwendungen zwischen verschiedenen Clouds hin- und herbewegt werden können
Container und Unikernels: Der aktuell spannendste Entwicklungsstrang im Cloud Computing sind Verfahren, mit denen Workloads und Anwendungen zwischen verschiedenen Clouds hin- und herbewegt werden können
(Bild: gemeinfrei (LoganArt / pixabay) / Pixabay )

Wie im Eingangsartikel dieser kleinen Reihe dargelegt, gewinnt die Anwendungsentwicklung in Richtung Cloud native-Anwendungen (CNA) immer mehr an Bedeutung. Bis vor kurzem sorgten noch Virtuelle Maschinen für die Portierung von dringend benötigten Anwendungen. Dieses Verfahren erweist sich aber zunehmend als vergleichsweise schwerfällig.

Virtual Machines sind schwerfällig

Ein physikalischer Server mit drei virtuellen Maschinen würde aus einem Hypervisor mit drei separaten Betriebssystemen bestehen. Im Unterschied dazu würde auf einem Server mit drei containerisierten Applikationen nur ein Betriebssystem laufen, das sich alle drei Container teilen. Das bedeutet, dass die von allen drei genutzten Teile des Betriebssystems nur einmal gelesen werden müssen, wodurch Container deutlich (!) weniger Ressourcen verbrauchen als VMs - wir sprechen von Megabytes bei Containern im Gegensatz zu Gigabytes bei VMs.

Ein weiterer großer Vorteil von Containern ist ihre sofortige Verfügbarkeit, sie booten extrem schnell. VMs dagegen benötigen manchmal mehrere Minuten zum Hochfahren. Zu bedenken gilt allerdings, dass aktuell eine große Aufregung in Sachen Container besteht, die ganze Branche ist „excited“. Erste Marktbeobachter mahnen, dass Container Services häufiger als notwendig eingesetzt werden, eben weil sie gerade State of the Art sind.

Microservices und Container

Cloud-basierte Anwendungen werden aus Microservices zusammengesetzt, die wie Bausteine zusammenpassen und immer eine ganz bestimmte Funktion übernehmen, etwa den Empfang von Nachrichten, das Bereitstellen bestimmter Daten, Rechnen oder das Auslesen von Sensoren. Die einzelnen Microservices sind voneinander unabhängig und können auf verschiedenen Servern installiert sein.

Zusammengefasst werden die Microservices in Container, die wie beschrieben leicht portiert werden können. Im Zuge der DevOps-Entwicklung ist eine weitestgehend automatisierte Kette von Entwicklung, Test, Deployment und Produktion vorgesehen. Diese erfordert das automatisierte Starten und Stoppen einer Vielzahl von Containern in einem vorgegebenen Prozess.

Orchestrierung mit Kubernetes

Das ist manuell, also durch einen einzelnen Menschen, nicht praktikabel. Die Orchestrierung von Containern übernehmen Open-Source-Werkzeuge wie die Container Orchestrierungs- und Management-Lösung Kubernetes, die ursprünglich von Google bereitgestellt wurde.

Kubernetes hat das Rennen um die Führerschaft der Container-Orchestrierungssysteme gewonnen. Die Kubernetes-Container-Orchestrierung ermöglicht es, die Redundanzen auf Software-Ebene abzubilden, so dass man Redundanten auf Datacenter-Ebene einsparen. In anderen Worten: Kubernetes vereinfacht die Organisation und das Scheduling der einzelnen Komponenten auf mehreren Rechnern und entkoppelt deren Betrieb“, erklärt Burkhard Noltensmeier, Geschäftsführer von Teuto.net den Erfolg von Kubernetes bereits im Herbst 2018 am Rande des Datacenter Day gegenüber DataCenter-Insider erklärt.

Kubernetes biete zudem ‚out of the Box‘-Mechanismen für Healthchecks, Skalierung, Rolling-Updates, Zero Downtime Maintenance, Replication und die automatische Wiederherstellung von fehlerhaften Services. Zusätzlich können die verschiedenen Kubernetes-Services voneinander separiert werden, auf der x Namespace-Ebene - zum Beispiel Production, QA und Development - und fein granular pro Service oder sogar pro Pod. Die Isolation erhöht das Sicherheitsniveau.

Container Management Lösungen

Wie im zweiten Teil dieser kleinen Reihe erläutert, wandeln sich klassische Cloud Management Plattformen immer mehr zu Container Management Plattformen, einfach weil sich Container weitgehend als „Transportmittel“ zwischen Clouds durchgesetzt haben. Im Dunstkreis des eben erläuterten Kubernetes finden sich denn auch mittlerweile eine ganze Reihe von Lösungen.

Aber keine neue Technik ohne Kinderkrankheiten: Cloud-Anwendungen bestehen dank der Microservice-Architektur mittlerweile aus Tausenden beweglicher Elemente. Dadurch bieten sie eine größere Angriffsoberfläche für sich ständig weiterentwickelnde Exploits. Eventuell müssen Unternehmen deswegen auch ihr Sicherheitskonzept überdenken: Eine „Zero Trust“-Strategie ist angeraten, also ein durchgängiges Null-Toleranz-Sicherheitskonzept.

Container gelten auch als kleiner Unsicherheitsfaktor, weil sie einen gemeinsamen Kernel nutzen. Wird dieser kompromittiert, sind alle Container kaputt. Im Falle von Virtuellen Maschinen ist der Kernel aber vom Host getrennt, die Virtualisierung gilt deswegen als sicherer als reine Container-Systeme. Findige Entwickler sind daher auf die Idee gekommen, das Virtualisierungsprinzip auf Container zu übertragen: Microsofts Hyper-V-Container teilen sich nicht den Kernel, sondern nutzen jeweils eigene. Ähnlich agieren die OpenStack Foundation mit den Kata Containers, Google mit gVisor und IBM mit Nabla Containers.

Der „Ovum Market Radar: Container Management Platforms 2018/19“ weißt den Amazon EC2 Container Service (ECS) als Marktführer aus, was nicht überrascht, ist AWS doch wie in der Marktübersicht in Teil 2 dieser Artikelreihe gesehen der größte Public Cloud-Anbieter weltweit. Andere, vergleichbare Lösungen sind Google Kubernetes Engine, IBM Cloud Kubernetes Service, Microsoft Azure Kubernetes Service, Oracle Container Native Service, Platform9 Managed Kubernetes oder VMware Cloud PKS.

Da der Markt ein noch sehr junger und getrieben von enthusiastischen Entwicklern mit langen Bärten (siehe „Die Zukunft der Software hat ´nen Bart“ auf DataCenter-Insider ist, entstehen fast stündlich neue Projekte, gerne auf Basis von Cloud Foundry, die allesamt den künftigen Großmarkt für Container Management Software bedienen wollen. Hier ein zwangsläufig unvollständiger Überblick über aktuelle Lösungen, die in ihren Ausprägungen unterschiedlich weit fortgeschritten sind: Docker Enterprise, IBM Cloud Foundry, IBM Cloud Kubernetes Service, Pivola Cloud Foundry, CoreOS rkt, Swarm, Mesos, Canonical LXD, Spoon, DxEnterprise, Flockport, Nomad, ContainerShip Cloud, Microsoft Draft, Google Kubernetes Engine, IBM Cloud Container Registry, IBM Cloud Hyper Protect Containers aaS, TrustRadius, Red Hat OpenShift, VMware PKS, Kata Containers, Scality MetalK8s.

Externe Hilfe gefragt

Container Services und Kompetenzen in Kubernetes sind also heute nicht mehr aus dem Management von Multi oder Hybrid Cloud-Umgebungen wegzudenken. Der virtuose Umgang damit ist aber noch einer jungen Elite von Softwareentwicklern vorbehalten. IT-Teams in Unternehmen fehlt dieses neue Wissen oft, so dass, wie im vorhergehenden Beitrag erläutert, im Multi Cloud-Zeitalter externe Hilfe durch Dienstleister nötig wird.

Zum Glück hat sich rund um die Cloud Native Computing Foundation, die momentan hinter Kubernetes steht, ein breites Ökosystem aus zertifizierten Service Providern gebildet, die die Container-Entwicklung vorantreiben. Das Analystenhaus Crisp berichtet, dass die führenden Dienstleister, die sich im Rahmen dieser Services aufstellen, allesamt über einen Plattform-offenen Ansatz für ihre Container-Cluster verfügen. Das Management von Containern mittels Kubernetes kann on-Premises, in der Private Cloud oder der Public Cloud betrieben werden. Das eröffnet der jungdynamischen Entwicklergemeinde die rastlose Suche nach neuen Wegen, die Effizienz der Entwicklung noch weiter zu steigern.

Die Virtuosen des Container Managements finden sich in den Reihen der für das Management von Hybrid und Multi Cloud-Umgebungen zuständigen Managed Public Cloud Provider und Managed Hybrid Cloud Provider (siehe Teil 4 dieser Reihe). Es ist davon auszugehen, dass Anwenderunternehmen zukünftig eine Art Generaldienstleister für ihre IT und Hybrid Cloud Operations anheuern werden.

Funktionen statt Container: Serverless

Der gemeine Entwickler ist ein rastloses Wesen. Man könnte ja zum Beispiel nach Wegen suchen, Anwendungen noch schmaler zu gestalten, so dass sie noch weniger Platz auf dem Server benötigen. Tatsächlich machen Einsparungs- und Effizienzprozesse in Rechenzentren solche Überlegungen notwendig. Dieser haben zum Serverless Computing geführt, dem „nächsten großen Ding nach Container“, so der CTO von Suse, Dr. Thomas Di Giacomo. „Serverless im Sinne von Funktionen, die einen noch kleineren Fußabdruck hinterlassen als Microservices.“

Bei Serverless benötigen die Funktionen nämlich weder ein Betriebssystem wie bei Virtuellen Maschinen, noch Code, Laufzeit, Systemwerkzeuge, Systembibliotheken und Einstellungen wie bei Microservices. Für Serverless sind weder Funktionsaufrufe noch Container noch Maschinen erforderlich. Die Funktionen selbst sind, wie der Oracle-Entwicklungschef Chad Arimura es formulierte, „Codeblöcke, idealerweise klein und zweckbestimmt“. Sie werden über eine Function-as-a-Service (FaaS)-Plattform koordiniert und terminiert.

Man könnte auch sagen, dass Serverless Computing die Funktion von der Anwendung befreit, was die Methode besonders für das Internet der Dinge (Internet of Things; IoT) interessant macht. Denn durch Serverless kann auf ein Event im IoT flexibel reagiert werden, weil die Funktion zwar da ist, aber keine Ressourcen verbraucht. Die FaaS-Plattform sorgt dafür, dass die Funktionen vor Ort gebracht werden können.

Für Serverless Computing spricht zudem, dass sich Entwickler nicht um das Management von Containern und der dazugehörigen Infrastruktur kümmern müssen. In der Praxis bedeutet dies, dass Serverless Computing für schnelle Prozesse eingesetzt wird, Container dagegen eher für komplexe Anwendungen.

Jüngster Entwicklungsstrang: Unikernels

Container | Kubernetes | Serverless | Function as a Service – was folgt? Unikernels: „Unikernels are specialised, single-address-space machine images constructed by using library operating systems“ Es werden also nur die Dinge eines Betriebssystems genutzt, die für den Betrieb einer Applikation nötig sind.
Container | Kubernetes | Serverless | Function as a Service – was folgt? Unikernels: „Unikernels are specialised, single-address-space machine images constructed by using library operating systems“ Es werden also nur die Dinge eines Betriebssystems genutzt, die für den Betrieb einer Applikation nötig sind.
(Bild: http://unikernel.org/)

Die Vordenker der Entwicklerszene sind natürlich bereits einen Schritt weiter: Chip Childers, Mitbegründer und aktueller CTO der Cloud Foundry Foundation, sieht Unikernels als den nächsten logischen Schritt nach Containern. „Container erhöhen die Auslastung von Servern, weil sie weniger OS benötigen. Diese Entwicklung wird von Unikernels auf die Spitze getrieben.“

Und das kam so: Docker hatte das britische Start-up Unikernel Systems 2016 übernommen. Dieses hatte besagte Unikernels entwickelt, die nur die wichtigsten Komponenten eines Betriebssystems zum Ausführen einer Anwendung verwenden. Applikationen und das zugehörige, maximal abgespeckte Betriebssystem sind in einem Container zusammengefasst. Unterm Strich verbrauchen Unikernels noch weniger Platz auf dem Server als „herkömmliche“ Container und werden deswegen auch schon mal als „Container 2.0“ bezeichnet. Unikernels lassen sich zudem auf einem Hypervisor oder direkt auf der Hardware ausführen.

Die Zukunft der Managed Cloud bleibt also spannend, neue Entwicklungen mit oder ohne Container erwarten uns. Bleiben Sie dran! Und lesen Sie im ersten Teil unserer Total-Cloud-Reihe nach, wie Cloud Computing die IT-Branche zu neuem Leben erweckte und welchen Stand das Cloud Computing in Deutschland heute hat. Im zweiten Teil wird der Markt für Cloud Computing in Deutschland genau analysiert, im dritten die möglichen Einsatzszenarien unter die Lupe genommen. Im vierten Teil haben wir uns die verschiedenen Arten von Service Providern angesehen.

(ID:45929502)