In this article
Was ist Container-Orchestrierung?
Ein Container ist eine leichtgewichtige, isolierte ausführbare Einheit, die eine Anwendung oder deren Komponenten enthält. Entwickler können einen Container so konfigurieren, dass er in jeder Umgebung und auf jedem Computer mit einer Container-Runtime-Engine ausgeführt werden kann.
Container machen Anwendungscode portabel. Wir können den Code, Betriebssystembibliotheken (OS), Umgebungsvariablen, Abhängigkeiten und Konfigurationen in einer einzigen Einheit bündeln. Anschließend können wir den Code in verschiedenen Cloud- oder On-Premises-Umgebungen bereitstellen und ausführen. Zu den beliebten Tools für die Containerisierung zählen Docker Engine, containerd und CRI-O.
Was ist Container-Orchestrierung?
Container-Orchestrierung bezeichnet die Automatisierung von Container-Bereitstellung, Betrieb und Lebenszyklusmanagement. Dabei wird automatisiert, wie wir unsere laufenden Container bereitstellen, deployen, skalieren, überwachen und ersetzen sowie ihren Speicher verwalten. Kubernetes, Docker Swarm, Nomad und Mesos sind beliebte Container-Orchestrierungsplattformen.
Container lassen sich nur schwer im großen Maßstab verwalten, insbesondere wenn viele containerisierte Anwendungen im Einsatz sind. Anwendungen mithilfe maßgeschneiderter Lösungen zu überwachen und zu verwalten, ist oft zeitaufwendig und fehleranfällig. Eine bewährte Container-Orchestrierungsplattform begegnet diesen beiden Herausforderungen durch Standardisierung und Automatisierung.
In diesem Beitrag erfahren Sie, warum Orchestrierung notwendig ist. Wir sehen uns einige Container-Orchestratoren genauer an und besprechen die Vorteile und Sicherheitsrisiken der Container-Orchestrierung.
Warum Orchestrierung notwendig ist
Bevor Orchestratoren ausgereift waren, wurden containerisierte Anwendungen oft mithilfe benutzerdefinierter Skripte und anderer Bereitstellungstools deployt, die meist auf bestimmte Plattformen und/oder Anwendungspakete zugeschnitten waren. Die durch Container ermöglichte Standardisierung schuf die Grundlage für universell einsetzbare Orchestratoren, indem sie alle Anwendungen hinter gemeinsamen APIs und Paketspezifikationen zusammenführte.
Vor der Einführung von Orchestratoren war es schwierig zu verwalten, welche Container liefen und wo sie ausgeführt werden sollten. Das galt besonders beim Umstieg auf Microservice-Architekturen, bei denen jederzeit Dutzende oder sogar Hunderte Container laufen müssen und mehrmals täglich aktualisiert werden können.
Orchestratoren übernehmen die aufwendige Aufgabe, diese Container über einen Host-Cluster hinweg auszuführen. Sie stellen standardisierte Konstrukte für die Skalierung, Upgrades, Netzwerkbereitstellung und viele weitere Aufgaben bereit. Einer ihrer wichtigsten Vorteile ist ein deklaratives Bereitstellungsmodell, mit dem Entwickler und Betreiber den gewünschten Anwendungszustand festlegen. Dieses Modell erspart es den Verantwortlichen, sich Gedanken darüber zu machen, wie und wo ein Prozess ausgeführt wird. Der Orchestrator erledigt die gesamte Arbeit, Container – und andere Ressourcen – zu erstellen und zu entfernen, um den gewünschten Zustand überall dort im Cluster herzustellen, wo es gerade sinnvoll ist. Orchestratoren überwachen auch weiterhin die bereitgestellten Ressourcen und können automatisch versuchen, den gewünschten Zustand wiederherzustellen, wenn beispielsweise ein Anwendungsabsturz oder ein Hardwarefehler dazu führt, dass die Bereitstellung von der Spezifikation abweicht.
Kubernetes: der führende Container-Orchestrator
Google stellte 2015 die Open-Source-Plattform Kubernetes für Container-Orchestrierung vor. Sie basierte größtenteils auf der Arbeit an Googles internem Container-Workload-Manager „Borg“. 2017 erreichte die Community-Unterstützung für Kubernetes ein Niveau, auf dem es zur beliebtesten Wahl wurde. Zusammen mit Kubernetes 1.0 wurde die Cloud Native Computing Foundation (CNCF) gegründet und von Google und anderen Gründungsmitgliedern an die Linux Foundation übergeben. Sie ist die Heimat von containerd, Helm, Linkerd, Prometheus, gRPC und weiteren erfolgreichen Open-Source-Projekten.
Kubernetes ist plattformunabhängig und unterstützt alle Betriebssysteme mit einer kompatiblen Container-Runtime-Engine. Mehrere Cloud-Anbieter unterstützen Kubernetes inzwischen. Die größten Anbieter – Azure, AWS und Google Cloud – bieten Kubernetes-as-a-Service-Lösungen an. 2018 berichtete die CNCF, dass 40 Prozent der Befragten einer weltweiten Umfrage zur Containerverwaltung Kubernetes verwendeten. Bis 2021 war dieser Anteil auf mehr als 80 Prozent gestiegen.
Unternehmen wie Pinterest bestätigen, dass Kubernetes die Effizienz steigert, Projekte schneller bereitstellt und durch die Verwaltung Hunderter Container Zeit und Geld spart. Laut einer CNCF-Fallstudie zu Spotify verbesserte sich die CPU-Auslastung der Container nach der Einführung von Kubernetes um das Zwei- bis Dreifache.
Dank zahlreicher Funktionen und einer aktiven Open-Source-Community bewältigt Kubernetes äußerst komplexe Anwendungsfälle und Architekturen. Wenn Sie jedoch mit wenigen kleinen, einfachen Anwendungen und seltenen Deployments arbeiten, kann Kubernetes überdimensioniert sein.
Weitere Plattformen für Container-Orchestrierung
Docker Swarm: Swarm ist ein Open-Source-Orchestrator, der in die Docker-Runtime-Engine integriert ist. Wie andere Cluster-Plattformen besteht er aus einem oder mehreren Manager- und Worker-Knoten und verwendet ein RAFT-Konsensmodell, um den Zustand zwischen ihnen abzugleichen. Swarm bietet nicht so viele Funktionen wie Kubernetes, ist jedoch einfacher einzurichten und zu installieren, da es in die Docker-Binärdatei integriert ist. Außerdem lässt es sich gut mit der Docker CLI und Docker Compose synchronisieren.
Apache Mesos: Apache Mesos ist ein Projekt der UC Berkeley. Airbnb, Apple, Twitter und andere große Unternehmen verwenden diesen Container-Orchestrator. Mesos ist leichtgewichtig und weist Ressourcen nahtlos zu. Es bietet Skalierbarkeit und Flexibilität, erfordert jedoch umfassende technische Kenntnisse.
Red Hat OpenShift: OpenShift ist eine auf Kubernetes basierende Platform-as-a-Service-Lösung (PaaS). Sie läuft nicht auf allen Betriebssystemen und erfordert CentOS, Fedora oder Red Hat Enterprise Linux Atomic Host (RHELAH). OpenShift bietet Authentifizierungs- und Autorisierungsfunktionen, die den meisten Kubernetes-Distributionen fehlen. Auch die einfache Bedienung ist für Entwickler attraktiv.
HashiCorp Nomad: Nomad ist eine Plattform, die sich auf Planung und Prozessverwaltung konzentriert. Sie kann jedoch mehr Container-Cluster skalieren als Kubernetes.
Rancher: Rancher ist eine Open-Source-Plattform von Rancher Labs, die „Kubernetes-as-a-Service“ anbietet. Die Plattform bietet eine einfach zu verwaltende, beobachtbare und skalierbare Lösung für die Verwaltung mehrerer Kubernetes-Cluster. Mit einer einzigen Bereitstellung lassen sich Konsistenz und Sicherheit in einer Infrastruktur mit mehreren Clustern gewährleisten – unabhängig davon, ob sich die Cluster On-Premises, am Edge, in privaten oder öffentlichen Cloud-Umgebungen oder in einer beliebigen Kombination davon befinden.
Vorteile der Container-Orchestrierung
Automatisierte Bereitstellung und Verwaltung: Mit steigender Anzahl der Container wird die manuelle Verwaltung immer schwieriger und fehleranfälliger. Orchestrierungsplattformen standardisieren und automatisieren diese Aufgaben. Da sie auf gut dokumentierten APIs und Prozessen basieren, können Betreiber diese Prozesse leichter überwachen und Fehler beheben.
Kontrollierter Zustand: Mit Container-Orchestratoren wie Docker Swarm und Kubernetes können wir den gewünschten Zustand für Container vorab festlegen. Der Orchestrator erstellt die deklarierten Komponenten und hält sie in diesem gewünschten Zustand. Dieses deklarative Modell ist für Entwickler viel einfacher zu schreiben als die imperativen Anweisungen, die für Skripte zur Bereitstellung erforderlich wären.
Installation und Bereitstellung: Container-Orchestratoren können neue Container und Anwendungsinstanzen einrichten, wenn der Traffic zunimmt. Dadurch entfällt möglicherweise die manuelle Installation und Bereitstellung jeder neuen Container-Instanz, wenn die Nutzung der Anwendung wächst. Oft kann die Orchestrierung eine Standard-API verwenden, um die betroffenen Workloads entsprechend zu skalieren. Alternativ lässt sich dieser Prozess mit einer Funktion wie dem Kubernetes Horizontal Pod Autoscaler automatisieren.
Standardisierte Releases und Rollbacks: Viele Container-Orchestrierungs-Deployments standardisieren Release- und Rollback-Prozesse. Dazu gehören das Testen verschiedener Anwendungsversionen, Canary-Deployments und Blue/Green-Releases.
Sicherheitsrisiken der Container-Orchestrierung
Zugriffskontrolle und Authentifizierung: Die meisten Orchestrierungsplattformen setzen keine strengen Richtlinien für Zugriffskontrolle und Authentifizierung durch. Das bedeutet, dass bereitgestellte Container stark durch Authentifizierungs- und Autorisierungsbedrohungen gefährdet sind – es sei denn, es ist eine Zugriffskontrolle vorhanden. Sie können jedoch Maßnahmen ergreifen, um Autorisierungs- und Authentifizierungsvorfälle zu verhindern, etwa indem Sie den Zugriff auf die Kubernetes-API kontrollieren.
Netzwerk- und Kommunikationskontrolle: Standardmäßig können alle Container innerhalb eines Clusters miteinander kommunizieren. Das erleichtert zwar die Entwicklung verteilter Anwendungen, ermöglicht aber auch, dass bösartige Container andere Container angreifen. Geeignete Netzwerkrichtlinien helfen, dieses Risiko zu verringern.
Darüber hinaus helfen Tools wie Snyk Infrastructure as Code (Snyk IaC) Entwicklern, Konfigurationen zu scannen und zu korrigieren, bevor sie in die Produktion gelangen. So bleibt die Infrastruktur sicher.
Sichern Sie Ihre Infrastruktur an der Quelle
Snyk automatisiert die IaC-Sicherheit und Compliance in Workflows und erkennt abweichende sowie fehlende Ressourcen.
Fazit zur Orchestrierung
Container-Orchestratoren sind zum Industriestandard geworden. Sie automatisieren die Bereitstellung, Installation, Einrichtung und Verwaltung von Containern.
Auch wenn die Container-Orchestrierung gewisse Sicherheitsrisiken birgt, können Unternehmen mit den richtigen Schutzmaßnahmen die Vorteile der Containerisierung nutzen, Zeit sparen, Konsistenz gewährleisten und automatisch skalieren.
Weitere Ressourcen:
Mit diesen Ressourcen erfahren Sie mehr über Container: