Containerisierung und Orchestrierung sind Begriffe, auf die man im Cloud Umfeld sehr schnell mal stösst. Die wohl bekanntesten Produkte in diesem Bereich heissen Docker, Kubernetes und OpenShift. Die Produkte und Begriffe werden aber oft durcheinandergebracht. Zeit, um etwas Klarheit zu schaffen.
Um die Produkte auseinander zu halten zu, gilt es zunächst einmal zu verstehen, was denn genau hinter den Begriffen Docker, OpenShift und Kubernetes steckt. Danach können die Tools eingeordnet werden.
Docker und Container
Docker ist ein Tool, das eine Art von Virtualisierung zulässt. Im Unterschied zu klassischer Virtualisierung arbeitet Docker jedoch nicht mit Virtuellen Maschinen, sondern mit Containern. Letztere haben gegenüber klassischen VMs einige deutliche Vorteile:
- Leichtgewichtiger dank geteilter Ressourcen
- Innert Sekunden gestartet oder gestoppt
- Einfache portierbarkeit
Dank Containerisierung ist es möglich, komplexe Anwendungen in ein Image zu packen und dieses innert wenigen Sekunden zu starten. Administratoren müssen sich dadurch nicht mehr darauf konzentrieren, Umgebungen zu konfigurieren, da notwendige Konfigurationen bereits im Image integriert sind. Die Containerisierung erleichtert auch Rollbacks, da bei Fehlern einfach das vorherige Image wieder gestartet werden kann.
Kubernetes
Das Starten eines Docker Images erfordert allerdings immer noch einen manuellen Eingriff durch einen Administrator. Bei einem Ausfall muss daher immer ein Mensch eingreifen, um die Anwendung wieder zu starten. Ausserdem kann das Deployen und Monitoren bei komplexen verteilten Applikationen sehr aufwendig werden. Hier kommt Kubernetes ins Spiel. Kubernetes ermöglicht es, containerisierte Anwendungen zu managen. Vereinfacht gesagt, wird mittels eines deklarativen Codes der Kubernetes Engine gesagt, welchen Zustand ein System haben soll. Erstellt nun selbständig die Container. Fällt nun beispielsweise ein Service aus, startet Kubernetes automatisch einen neuen Service, sodass der Status des Systems wieder der Deklaration entspricht. Steht nun beispielsweise ein Update an, muss einfach das deklarations-File geändert werden und Kubernetes passt den Zustand des Systems automatisch im an.
OpenShift
Um zu verstehen, was OpenShift ist, muss man zunächst verstehen, was Kubernetes nicht ist, nämlich ein all-inclusive PaaS System. Kubernetes bietet lediglich die Bausteine, um eine solche Plattform darauf aufzubauen. Die meisten Firmen haben jedoch nicht die Ressourcen, um eine solche Plattform aufzubauen. Dieser Fakt machte sich RedHat zu nutzen, indem sie OpenShift entwickelten. OpenShift stellt als fertige Plattform für Unternehmen alles zur Verfügung, was sie brauchen. Wenn Kubernetes in der Analogie also Bausteine darstellt, stellt OpenShift ein fertiges Haus inklusive Türen (mit Schlössern), Fenstern und Zentralheizung dar.
Fazit
Ziel dieses Blogs war es, zu verstehen, wie Docker, Container, Kubernetes und OpenShift zusammenhängen. In einem Satz gesagt, ist Docker die Plattform, welche Container zur Verfügung stellt und OpenShift ist eine PaaS Anwendung, welche auf Grund der Prinzipien von Kubernetes containerisierte Anwendungen steuert. Stark vereinfacht in der Analogie eines Orchesters erklärt, ist ein Docker Container ein einzelner Musiker und OpenShift ist das Konzerthaus, in dem der Musiker, zusammen mit anderen Musikern, ein Konzert spielt. Kubernetes ist dabei der Lieferant, der die Baumaterialien für das Konzerthaus zur Verfügung gestellt hat.
Weiterführende Links
- Play with Docker, lerne Docker kostenlos und ohne Installation: https://labs.play-with-docker.com/
Quellen
- Burns, B., Beda, J., & Hightower, K. (2021). Kubernetes: Eine kompakte Einführung (T. Demmig, Übers.; 2., aktualisierte und erweiterte Auflage). dpunkt.verlag.
- Mouat, A. (2016). Docker: Software entwickeln und deployen mit Containern (T. Demmig, Übers.; 1. Auflage). dpunkt.verlag.
- OpenShift und Kubernetes: Was ist der Unterschied? (o. J.). Abgerufen 28. November 2021, von https://www.redhat.com/de/blog/openshift-and-kubernetes-whats-difference
- Red Hat OpenShift und Kubernetes im Vergleich. (o. J.). Abgerufen 28. November 2021, von https://www.redhat.com/de/topics/containers/red-hat-openshift-kubernetes
- What is Kubernetes? (o. J.). Kubernetes. Abgerufen 28. November 2021, von https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/