Übersicht: Containter-Lösungen
Container-Lösungen 101:
Was wird in der IT als Container bezeichnet?
Nachdem virtuelle Maschinen (VMs) zunächst einen bedeutenden Fortschritt in der Prozessentwicklung darstellten, markiert die Einführung von Containern nun den nächsten Paradigmenwechsel. Container ermöglichen die Abtrennung von Anwendungen von ihrer Laufzeitumgebung. Sie benötigen kein eigenes Betriebssystem, sondern nutzen das bereits installierte System.
Die Virtualisierung erfolgt somit ohne einen Hypervisor. Innerhalb einer Betriebssysteminstallation können mehrere isolierte Container gleichzeitig betrieben werden. Container beinhalten sowohl die erforderlichen Betriebssystemkomponenten als auch die Anwendungen. In diesen Containern werden eigenständig lauffähige und voneinander unabhängige Microservices bereitgestellt. Jeder einzelne Service kann unabhängig konfiguriert, implementiert, skaliert und aktualisiert werden.
Warum sollten Container bevorzugt werden?
Container lassen sich äußerst schnell bereitstellen, starten und stoppen. Wenn für einen Dienst zusätzliche Kapazitäten erforderlich sind, können schnell neue Container bereitgestellt werden. Umgekehrt können nicht mehr benötigte Container sofort gelöscht werden.
Was ist Container-Orchestrierung?
Die Bereitstellung, Skalierung, der Lastenausgleich und die Vernetzung von Containern können komplex und zeitaufwändig sein. Die Container-Orchestrierung automatisiert diese Prozesse und bietet zahlreiche Optionen zur Anbindung zusätzlicher Schnittstellen und zentraler Funktionen.
Was bedeutet K8s?
Kubernetes, kurz K8s, ist eine von Google entwickelte Open-Source-Orchestrierungssoftware, die seit 2014 verfügbar ist. Sie ermöglicht es Softwareentwicklern und IT-Administratoren, das Deployment, die Skalierung, den Betrieb und die Verwaltung von Containerumgebungen zu organisieren, zu steuern, zu überwachen und zu automatisieren.
Was ist Managed Kubernetes?
Managed Kubernetes wird häufig als Managed Service oder Kubernetes as a Service angeboten und auf einer speziellen Cloud-Plattform bereitgestellt. Dazu gehört auch die Bereitstellung, Verwaltung und Aktualisierung der Kubernetes-Container-Infrastruktur sowie der Betrieb der Systemumgebung (Nodes).
Dank dieser Lösung können sich Entwickler ausschließlich auf die Anwendungen konzentrieren, die auf den Nodes ausgeführt werden. Dadurch werden sowohl Kosten als auch interne Ressourcen eingespart, was es erleichtert, sich auf das Kerngeschäft zu fokussieren.
Was ist Docker?
Docker ist ein umfassendes Technologie-Stack, wobei „containerd“ nur einen Teil davon ausmacht. Dieser Teil stellt eine eigene High-Level-Container-Laufzeit (Runtime) dar. In Bezug auf Kubernetes-Cluster wird Docker mit der Container-Runtime verwendet, um Container-Images abzurufen und auszuführen. Docker ist eine beliebte Wahl für diese Runtime, wobei auch andere gängige Optionen wie containerd und CRI-O zur Verfügung stehen. Es ist jedoch wichtig zu beachten, dass Docker nicht speziell für die Integration in Kubernetes entwickelt wurde, was zu bestimmten Herausforderungen führen kann.
Was sind Docker-Images?
Container werden in sogenannten Docker-Images verpackt und in einer Image-Registry, wie beispielsweise Harbor, verwaltet und zum Abruf bereitgestellt. Die Kubernetes-Knoten verfügen über eine Container-Engine (Runtime), um diese Container auszuführen.
Welche Probleme können mit Docker auftreten?
Seit Ende 2020 kann Docker nicht mehr als Container Runtime (Engine) in Kubernetes verwendet werden, da das neueste Update von Kubernetes dies nicht mehr unterstützt. Dies hat zur Folge, dass Managed Kubernetes-Services wie GKE, EKS oder AKS in Zukunft möglicherweise nicht mehr für die Worker-Nodes funktionieren. Wenn Ihr Service Anpassungen für Ihre Nodes erfordert, müssen Sie diese möglicherweise entsprechend Ihren Umgebungs- und Laufzeitanforderungen aktualisieren.
Funktionieren Docker-Images weiterhin in Kubernetes?
Ja, definitiv. Kubernetes hat in einem Blogbeitrag bestätigt, dass Docker-Images weiterhin unterstützt werden, da sie mit der Open Container Initiative (OCI) kompatibel sind und somit OCI-konform sind. Das bedeutet, dass Ihre Docker-Images nach wie vor in Kubernetes verwendet werden können. Der Grund dafür ist, dass das von Docker erzeugte Image kein spezifisches Docker-Image ist, sondern ein OCI-Image. Jedes OCI-konforme Image, unabhängig davon, mit welchem Tool es erstellt wurde, wird von Kubernetes gleich behandelt. Sowohl containerd (ein Teil von Docker) als auch CRI-O sind in der Lage, diese Images abzurufen und auszuführen.