Cloud-Apps mit Kubernetes, Docker & Co. virtualisieren

geschätzter Leseaufwand: 2 Minuten

Will man Cloud-Anwendungen auf einer heterogenen Plattform zur Verfügung stellen, ist es mit dem herkömmlichen Virtualisieren von Anwendungen nicht getan. Hierfür sind neue Ansätze erforderlich, die ursprünglich teils von Google stammen. Gemeint sind Technologien wie Kubernetes und Docker, die sich um das Verteilen und Ausführen von Cloud-Apps kümmern, und das zum größten Teil vollautomatisiert.

Neben der Automatisieren von Cloud-Anwendungen spricht auch das Reduzieren der Software-Bausteingrößen für diese Art der Programmierung, da sich Änderungen am Programmcode schneller vornehmen lassen. Zudem lasen sich große Software-Projekte mithilfe fest definierter Schnittstellen schneller und einfacher realisieren. Denn mit eine Mal spielt die zugrunde liegende Software-Technik keine Rolle mehr, solange mit den APIs die richtigen Daten bereitgestellt werden.

Container-Virtualisierung ist schlanker und flexibler

Die Container-basierte Virtualisierung von Anwendungen bietet aber noch weitere Vorteile. So wird bei der herkömmlichen Virtualisieren das komplette Systeme abstrahiert, also die zugrunde liegende Hardware (außer den CPUs) und das Betriebssystem. Das kann man sich mithilfe eines Container-basierten Modelles komplett sparen, da nur die notwendigen Bibliotheken und andere Software-Komponenten in die Container eingebunden werden.

Folge: Container verhalten sich wie Prozesse eines Betriebssystems, die mittels geeigneter Mechanismen (auch Control-Groups, kurz cgroups genannt) vom Rest des Systems entkoppelt werden. Das macht sie schlanker und einfacher administrierbar. Hinzu kommt die vollständige Entkopplung vom Gesamtsystem, was das Implementieren der Container flexibler gestaltet. Damit können Container auf nahezu jeder Plattform eingesetzt werden, was sie sehr portabel macht.

Mit Kubernetes die Container-Umgebung dirigieren

Wichtig hierbei sind aber auch Technologien wie Docker und Kubernetes. So stellt Docker die Runtime für das Ausführen von Container-basierten Anwendungen dar. Kubernetes hingegen ist der Orchestrator des gesamten Systems, sorgt also dafür, dass die klar definierte Anzahl an Containern pro Konfiguration permanent zur Verfügung steht.

Das bedeutet zum Beispiel, dass Kubernetes weitere erforderliche Container nachlädt oder neue Container startet, sobald ein anderer unplanmäßig beendet wird. Auch das Umziehen einer Container-Sammlung von einem Server auf einen anderen erledigt Kubernetes, und das jeweils zur Laufzeit und vollautomatisiert. Damit müssen sich Entwickler und Administratoren keine Gedanken um diese Prozesse machen.

Kubernetes-basierte Container-Anwendungen im Behördeneinsatz

Natürlich stellt sich die Frage, wie und wo die Virtualisierung von Anwendungen auf Container-Basis eingesetzt wird. So kommt diese Technologie für das Bereitstellen von kommunalen Bürgerserviceportalen zum Einsatz. Dort können sich Anwender beispielsweise mithilfe des elektronischen Personalausweises auf Behörden-Webseiten authentifizieren, worum sich eine Kubernetes-basierte Anwendung kümmert. Dazu gehören Datenbanken, Bedieneroberflächen und weitere Komponenten, die alle einem Container zugeordnet werden.

Disclaimer: Diesen Beitrag habe ich originär für die x-cellent Technologies GmbH aus München für deren Blog verfasstfür die x-cellent Technologies GmbH aus München für deren Blog verfasst.