Was sind Container?
Bei einem Container handelt es sich um eine abstrakte, eigenständige und ausführbare Software-Einheit, die mit allem ausgestattet ist, das für die Ausführung einer Anwendung benötigt wird: Code, Laufzeit, Systemtools und Systembibliotheken. Container verfügen über definierte Parameter und können ein Programm, einen Workload oder eine bestimmte Aufgabe ausführen.
Zum Verständnis von Containern hilft eine einfache Analogie: Denken Sie an Schiffscontainer. Man kann eine Menge Fracht in einem einzigen Container unterbringen und eine Menge Schiffscontainer auf ein einziges Schiff packen oder sie auf mehrere Schiffe aufteilen. Genauso wie Sie einen Kühlcontainer für den Transport einer bestimmten Art von Gütern verwenden können, können Sie auch spezielle Container für bestimmte Workloads einsetzen.
Die einzige Einschränkung beim Einsatz von Containern ist, dass sie auf den Kernel ihres Hostsystems angewiesen sind. Ein Linux-Container kann ausschließlich auf einem Linux-Host betrieben werden, ein Windows-Container auf einem Windows-Host, und genauso verhält es sich auch bei anderen Betriebssystemen.
Die Vorteile von Containern
Mithilfe von Containern können Systemmanager eine höhere Dichte in ihrer Architektur erzielen. Es ist möglich, mehrere Container zu definieren und auszuführen, wobei jeder Container auf einen bestimmten Workload abgestimmt ist, um so die Effizienz zu steigern. Container bieten Ihnen nur das, was Sie benötigen. Sie enhalten keine überflüssige Software, noch verschwenden sie Rechenressourcen für Hintergrundprozesse.
Immer mehr Unternehmen erkennen den enormen Nutzen des Einsatzes von Containern, da diese portabel, konsistent und benutzerfreundlich sind. IT-Abteilungen können mithilfe der Agilität und Automatisierung, die Container bieten, Continuous Integration/Continuous Delivery (CI/CD) realisieren. Container dienen auch der Isolierung von Workloads und tragen so zu robusten Datensicherheitsrichtlinien bei.
Container bieten Ihnen nur das, was Sie benötigen. Sie enhalten keine überflüssige Software, noch verschwenden sie zusätzliche Rechenressourcen für Hintergrundprozesse.
Virtuelle Maschinen im Vergleich mit Containern
Wie Container sind auch virtuelle Maschinen (VMs) eigenständige Rechenumgebungen, die von der Hardware abstrahiert sind. Im Gegensatz zu Containern benötigen VMs ein vollständiges Replikat eines Betriebssystems, um zu funktionieren. VMs bieten allerdings auch einige Vorteile, da Sie mit einer VM ein anderes Betriebssystem als das des Hostsystems simulieren können. Wenn Ihr Hostrechner beispielsweise mit Windows betrieben wird, können Sie ein Linux-Betriebssystem in einer VM ausführen und ebenso funktioniert es auch umgekehrt. Ist das Betriebssystem des Rechners Linux, können Sie auf der VM Windows simulieren. VMs ermöglichen darüber hinaus eine noch stärkere Isolierung und Datensicherheit, da sie noch stärker isolierte Rechensysteme sind.
Da VMs jedoch im Wesentlichen eigenständige Systeme mit eigenem Betriebssystem sind, dauert das Booten viel länger als bei Containern, und sie sind weniger effizient. Aufgrund der Tatsache, dass ein komplexer Workload auf zahlreiche Container aufgeteilt werden kann, die wiederum beliebig auf mehreren Systemen oder Cloud-Infrastrukturen eingesetzt werden können, sind Container zudem deutlich portabler. So können Sie beispielsweise Workloads in mehreren Containern bereitstellen, sowohl auf Ihrer lokalen Hardware als auch auf Ihrem Public-Cloud-Dienst, und alles über ein einziges Orchestrierungs-Dashboard verwalten. Aufgrund dieser Portabilität skalieren Container wesentlich effektiver als VMs.
Was ist Container-Orchestrierung?
Die Orchestrierung ist eine Methodik, die Ihnen eine Top-Down-Ansicht Ihrer Container bietet und Ihnen Transparenz und Kontrolle darüber verschafft, an welchen Stellen Container bereitgestellt und wie die Workloads über mehrere Container hinweg zugeordnet sind. Die Orchestrierung ist für die Bereitstellung mehrerer Container unerlässlich. Ohne die Orchestrierung müssten Sie jeden Container individuell verwalten. Mithilfe der Orchestrierung können IT-Manager zudem Richtlinien, wie z. B. Fehlertoleranz, selektiv oder ganzheitlich auf eine Sammlung von Containern anwenden.
Eine der erweiterten Funktionen, die durch die Container-Orchestrierung ermöglicht werden, ist die automatisierte Verwaltung von Workloads über mehrere Rechenknoten hinweg. (Als Knoten wird jedes System bezeichnet, das mit einem Netzwerk verbunden ist.) Wenn Sie beispielsweise über fünf Server verfügen, jedoch einer der Server einen Wartungszyklus startet, kann der Orchestrator den Workload automatisch auf die vier verbleibenden Server umleiten und den Workload entsprechend der Leistungsfähigkeit der verbleibenden Knoten gleichmäßig verteilen. Der Orchestrator kann diese Aufgabe ohne menschliches Zutun ausführen.
Kubernetes und Docker
Kubernetes ist eine Open-Source-Container-Orchestrierungsplattform, die ursprünglich von Google entwickelt wurde und heute als die De-facto-Standardlösung auf dem Markt gilt. Docker ist ebenfalls eine Open-Source-Software, die zur Bereitstellung eines einzelnen Containers verwendet wird und inzwischen die De-facto-Standardlösung für diese Art von Aufgabe geworden ist.
Kubernetes baut auf Lösungen wie Docker auf, um die Bereitstellung und Verwaltung mehrerer Container zu ermöglichen. Beide Lösungen sind allgegenwärtig auf dem Markt vertreten, und obwohl sie beide Open Source sind, gibt es auch proprietäre Angebote, die die jeweiligen Frameworks um zusätzliche Funktionen und Tools erweitern. Bei der Arbeit mit Containern werden sowohl Kubernetes als auch Docker zu alltäglichen Termini.
Container-Anwendungsfälle
Wie bereits erwähnt, können Container verwendet werden, um eine bestimmte Aufgabe, ein Programm oder einen Workload auszuführen. Wir können unser Verständnis über die Funktionsweise von Containern vertiefen, indem wir uns drei wichtige Anwendungsfälle genauer ansehen.
- Microservices: Ein Microservice ist eine spezielle Funktion innerhalb eines größeren Services oder einer Anwendung. So können Sie beispielsweise einen Container verwenden, um eine Such- oder Nachschlagefunktion auf einer Datenmenge auszuführen, anstatt eine ganze Datenbankanwendung zu laden. Da diese Operation in einer Container-Umgebung ausgeführt wird, läuft sie schneller als auf einer nicht containerisierten Umgebung wie einer VM oder einem Bare Metal, in der ein vollwertiges Betriebssystem und Backup-Prozesse zusätzliche Rechenressourcen beanspruchen. Mithilfe von Containern lassen sich Microservices leichter und schneller bereitstellen und nutzen.
- Hybrid-Cloud und Multicloud: In einer Hybrid-Cloud-Umgebung wird der Container zu Ihrer grundlegenden Recheneinheit, die von der zugrunde liegenden Hardware abstrahiert ist. Sie müssen sich keine Gedanken darüber machen, wo der Container ausgeführt wird, da Sie den Container überall ausführen können. Aus diesem Grund erleichtern Container die Bereitstellung von Workloads in einer Hybrid-Cloud-Umgebung. Dies wird üblicherweise über die Orchestrierungsplattform erledigt und bietet Administratoren einen Überblick über die Bereitstellungsorte der Container und die Funktionen jedes Knotens sowohl auf lokalen als auch auf Public-Cloud-Infrastrukturen. Unternehmen sollten im Hinblick auf die Cloud-Sicherheitspraktiken in Hybrid-Cloud-Modellen nach wie vor Bedenken wie die Authentifizierung berücksichtigen, um sicherzustellen, dass ausschließlich autorisiertes Personal auf Workloads und Daten innerhalb der einzelnen Container zugreifen kann. Unternehmen können sich jedoch in puncto Authentifizierung in der Container-Umgebung auf einen vereinfachten Ablauf einstellen.
- Maschinelles Lernen: Machine-Learning- und Deep-Learning-Workloads stellen aufgrund ihrer hohen Komplexität, der vielen sich bewegenden Elemente und der Tatsache, dass die bedienende Person nur sehr wenig tun kann, um Einfluss auf eine containerisierte Umgebung zu nehmen und etwas an ihr zu ändern, eine Herausforderung dar. Bei dieser Art von Workloads ist das algorithmische Training tendenziell der häufigere Typ, der über Container bereitgestellt wird. Datenwissenschaftler und Forscher greifen oftmals auf Workload-Tagging zurück. Dabei handelt es sich um den Prozess der Identifizierung und Zuordnung von Workloads zu Knoten mit speziellen Funktionen. Alternativ verwenden Datenwissenschaftler Container auch für die parallele Verarbeitung. Dabei handelt es sich um ein Verfahren, bei dem große Datenmengen in Datenblöcke zerlegt und Algorithmen auf jedem dieser Blöcke simultan ausgeführt werden, um so schnellere Ergebnisse zu erzielen.
Das bietet Intel
Wenn Sie mehrere Container auf einem einzigen Knoten ausführen, können Sie, solange der Knoten über die erforderlichen Rechenressourcen verfügt, eine gute Skalierbarkeit erzielen. Deswegen ist Hardware wichtig. Mehr Rechenressourcen sorgen für eine höhere Dichte in einer größeren Anzahl von Containern. Intels Beitrag zu diesem Bereich umfasst ein vollständiges Angebot an Server-Architekturen und -Komponenten, einschließlich der skalierbaren Intel® Xeon® Prozessoren, der Intel® SSDs für Rechenzentren und der Intel® Ethernet-Produkte. Diese Technologien ermöglichen eine schnelle, robuste, effiziente und dichte Containerisierung.
Ein wichtiger Beitrag den Intel im Hinblick auf Softwarelösungen bietet ist Node Feature Discovery (NFD). NFD wurde von Intel entwickelt und kürzlich der Open-Source-Hauptversion von Kubernetes hinzugefügt. Diese Funktion ermöglicht es einem Orchestrator, zentrale Technologien und Funktionen – wie z. B. Intel® AVX-512 – in jedem verfügbaren Knoten zu identifizieren. Wenn ein Systemadministrator einen Workload hat, der Intel® AVX-512 benötigt, kann Kubernetes dem Administrator mithilfe von NFD mitteilen, welche der Knoten diese Funktion anbieten, woraufhin der Administrator gezielt Container auf diesen Knoten bereitstellen kann.
Und zu guter Letzt ermöglicht Intel Telemetrie, um die Leistung auf Container-Ebene im Verhältnis zu den einzelnen aktivierten Knoten transparent darzustellen. Genau genommen hat Intel Leistungsindikatoren zum Open-Source-Telemetrie-Tool cAdvisor von Google beigesteuert. Dies ermöglicht es Unternehmen, die Leistung von Containern zu messen und eine granulare Kontrolle über diese Leistung zu erhalten, was wiederum eine bessere Optimierung, Workload-Zuordnung und eine höhere Dichte bei der Bereitstellung von mehr Containern auf jedem Knoten ermöglicht.
Ein Versprechen von hohem Wert
Man muss verstehen, dass Container nicht nur ein Trend sind. Sie bieten Skalierbarkeits-, Portabilitäts- und Sicherheitsvorteile, die Container – sowohl heute als auch in Zukunft – zu einer zentralen Methodik für die Bereitstellung von Workloads machen werden. Falls Sie sich bisher noch keine Gedanken über Container gemacht haben, ist jetzt der beste Zeitpunkt, damit anzufangen. Wenn Sie bereits mit Containern arbeiten, sollten Sie sich im nächsten Schritt überlegen, wie Sie mithilfe der richtigen Architektur in Verbindung mit Telemetrie- und Feature-Discovery-Tools die Effizienz, Leistung und Dichte Ihrer Container steigern können.