kalafoto - stock.adobe.com
Bare Metal versus VM: Wo sind Container besser aufgehoben?
Sollte man Container eher auf Bare-Metal-Servern oder auf virtuellen Maschinen bereitstellen? Dieser Beitrag wägt die Vor- und Nachteile für beide Seiten ab.
Sie wissen sicher, warum Sie Container für Ihre IT in Betracht ziehen sollten. Aber wissen Sie auch, auf welcher Art von Infrastruktur sie eingesetzt werden sollten? Konkret gefragt: Sind Container auf Bare-Metal-Servern eine bessere Option als auf virtuellen Maschinen (VM)?
Die Antwort auf diese Frage hängt von vielen Variablen ab. Es gibt eine Reihe von Vor- und Nachteilen, Container auf Bare-Metal-Hosts auszuführen. Aber ebenso viele gibt es auch für VMs.
Bare Metal versus virtuelle Maschinen
Die jeweiligen Vor- und Nachteile von Bare-Metal-Servern gegenüber virtualisierten Hosting-Umgebungen aufzulisten, ist nichts Neues. Die jeweiligen Vor- und Nachteile sind CIOs und CTOs bekannt, seitdem sich die Virtualisierung in den 2000er Jahren in den Rechenzentren verbreitet hat – lange bevor jemand von Docker-Containern gehört hatte. Diese feierten erst 2013 ihr Debüt.
Zu den Hauptvorteilen von Bare-Metal-Servern gehören:
- Eine höhere Leistung, da keine Systemressourcen für die Hardwareemulation verschwendet werden.
- Die volle Nutzung aller Maschinenressourcen, da keine von ihnen in Zeiten hoher Nachfrage untätig bleibt.
- Die einfachere Administration, da in der Infrastruktur weniger Hosts, Netzwerkverbindungen und Festplatten zu verwalten sind.
Virtuelle Maschinen als Gegenpol bieten folgende Vorteile:
- Die Anwendungen können einfach zwischen Hosts verschoben werden, indem VM-Images von einem Server auf einen anderen übertragen werden.
- Es gibt eine Isolierung zwischen den Anwendungen, die auf verschiedenen VMs laufen. Diese Struktur bietet einige Sicherheitsvorteile und kann die Komplexität des Managements reduzieren.
- Eine konsistente Softwareumgebung über die gesamte Infrastruktur hinweg kann geschaffen werden, wenn sich alle Apps auf dem gleichen Typ von VM befinden – auch wenn die zugrunde liegenden Host-Server nicht homogen sind.
VMs haben aber auch einige Nachteile:
- Die Serverressourcen können unterausgelastet sein. Wenn Sie beispielsweise Speicherplatz auf einem Server-Host zuweisen, um ein VM-Festplatten-Image zu erstellen, ist dieser Abschnitt für andere Zwecke nicht verfügbar – selbst wenn die VM, an die die Festplatte angehängt ist, nicht alle davon verwendet.
- In den meisten Fällen können VMs nicht direkt auf die physische Hardware zugreifen. So kann die VM beispielsweise keine Rechenoperationen auf eine GPU auf ihrem Host auslagern (zumindest nicht so einfach), da die VM von einer zugrunde liegenden Host-Umgebung abstrahiert ist.
- VMs sind im Allgemeinen nicht so leistungsfähig wie physische Server, da eine Abstraktionsschicht zwischen der Anwendung und der Hardware hinzugefügt wird.
Moderne Virtualisierungsplattformen können Administratoren helfen, diese Einschränkungen zu umgehen. So kann zum Beispiel ein Administrator ein dynamisches Festplatten-Image erstellen, das sich mit zunehmender VM-Auslastung erweitert. Auf diese Weise lässt sich vermeiden, dass Speicherplatz auf einem Host gesperrt wird, bevor ein Gast ihn tatsächlich nutzt.
So genannte Pass-through-Funktionen ermöglichen VMs auch den direkten Zugriff auf physische Hardware auf einem Host. Allerdings funktionieren diese Hacks nicht immer gut. Sie werden nicht auf allen Arten von Hosts und Gastbetriebssystemen unterstützt und verursachen zusätzlichen Verwaltungsaufwand. Wenn die Anwendungen, die Sie ausführen möchten, Bare-Metal-Zugriff erfordern, ist es am besten, diese Applikationen auch auf einem Bare-Metal-Server auszuführen.
Die Alternative ist: Sie können Ihre Anwendungen in Containern auf Bare Metal laufen lassen, um das Beste aus beiden Welten herauszuholen.
Quadratur des Kreises: Container auf Bare Metal laufen lassen
Container auf Bare-Metal-Hosts bewahren viele der Vorteile, die VMs bieten – jedoch ohne die Nachteile der Virtualisierung in Kauf nehmen zu müssen:
- Sie erhalten in Anwendungen Zugriff auf Bare-Metal-Hardware, ohne sich auf Pass-through-Techniken verlassen zu müssen. Denn die Anwendungsprozesse laufen auf dem gleichen Betriebssystem wie der Host-Server.
- Optimale Nutzung der Systemressourcen. Obwohl Sie Einschränkungen festlegen können, wie viel Compute, Storage und Networking Container nutzen können, benötigen sie diese Ressourcen im Allgemeinen nicht für die Zuweisung zu einzelnen Containern. Ein Host kann somit die Nutzung von gemeinsamen Systemressourcen nach Bedarf verteilen.
- Bare Metal verleiht Apps eine größere Performance, da sie keine Hardwareemulationsschicht von einem Host-Server trennt.
Darüber hinaus erhalten Sie durch das Bereitstellen von Containern auf Bare Metal die Vorteile, die bisher nur für VMs gegolten haben:
- Profitieren Sie von der Möglichkeit, Anwendungen in mobilen Umgebungen bereitzustellen, die problemlos zwischen Host-Servern wechseln können.
- Obwohl Container zweifellos nicht den gleichen Grad an Isolierung bieten wie VMs, ermöglichen es die Container den Administratoren, Apps daran zu hindern, miteinander zu interagieren. Zudem lassen sich strenge Beschränkungen für die mit jedem Container verbundenen Berechtigungen und Ressourcenzugriffe festlegen.
Kurz gesagt: Lassen Sie Container auf Bare Metal laufen. Sie nutzen damit alle Vorteile der Leistung von Bare-Metal-Servern und Sie nutzen gleichzeitig die Vorteile der Portabilität und der Isolationsfunktionen von VMs.
Linux-Container auf Bare-Metal Windows
In der Vergangenheit gab es keine einfache und effiziente Möglichkeit, Linux-Container auf einem Windows-Host auszuführen. Das hat sich mittlerweile geändert: Linux Containers on Windows (LCOW) ist ein Tool von Docker, das Linux-Container automatisch auf einem Windows-Rechner ausführt.
Technisch gesehen benötigt LCOW den Windows-Host, um einen Hyper-V Hypervisor einzurichten. Damit laufen die Linux-Container eigentlich nicht direkt auf Bare Metal in der Windows-Umgebung. Der Fußabdruck des Hypervisors ist jedoch sehr klein, und der Hypervisor wird vollständig gemanagt. Folglich existieren die Performance- und Management-Nachteile, die mit dem Hosting von Containern innerhalb einer VM verbunden sind, bei LCOW nicht. Damit beseitigt die Technologie einen weiteren Nachteil des Betriebs von Containern auf Bare Metal.
Die Nachteile von Containern auf Bare Metal
Wo Licht ist, ist auch Schatten. Sie fragen sich wahrscheinlich, warum Sie nicht alle Container mit Bare Metal betreiben sollen. Die Antwort: Container auf Bare Metal haben auch Nachteile. Halten Sie sich die folgenden Nachteile der Verwendung von Bare-Metal-Servern für das Hosting einer Container-Engine anstelle von VMs vor Augen:
- Physische Server-Upgrades sind schwierig. Wenn Sie einen Bare-Metal-Server ersetzen müssen, müssen Sie die Container-Umgebung auf dem neuen Server von Grund auf neu erstellen. Wäre die Container-Umgebung Teil eines VM-Images, könnten Sie das Image einfach auf den neuen Host verschieben.
- Die meisten Cloud-Umgebungen benötigen VMs. Es gibt einige Bare-Metal-Cloud-Hosts, wie zum Beispiel das OnMetal-Angebot von Rackspace und Oracles Bare Metal Cloud Services. Aber Bare-Metal-Server in Cloud-Computing-Umgebungen kosten in der Regel deutlich mehr, wenn der Cloud-Anbieter sie überhaupt im Programm hat. Im Großen und Ganzen bieten die meisten Public-Cloud-Anbieter nur VMs an. Wenn Sie Plattformen der Public-Cloud-Anbieter zum Ausführen von Containern verwenden möchten, müssen Sie diese in VMs bereitstellen.
- Container-Plattformen unterstützen nicht alle Hardware- und Softwarekonfigurationen. Heutzutage können Sie fast jede Art von Betriebssystem auf einer VM-Plattform wie VMWare oder einer kernelbasierten VM hosten. Und Sie können diese Virtualisierungsplattform auf fast jedem Betriebssystem oder Server ausführen. Docker ist eingeschränkter und kann nur auf Linux, bestimmten Windows-Servern und IBM-Mainframes laufen, wenn es auf Bare Metal gehostet wird. Beispielsweise benötigen Bare-Metal-Server, die Windows Server 2012 ausführen – was Docker derzeit nicht unterstützt – eine VM auf dem Windows Host.
- Container sind abhängig vom Betriebssystem. Linux-Container laufen auf Linux-Hosts; Windows-Container laufen auf Windows-Hosts. Ein Bare-Metal-Windows-Server benötigt eine Linux-VM-Umgebung, um Docker-Container für eine für Linux kompilierte Anwendung bereitzustellen. Allerdings gibt es in diesem Bereich technologische Entwicklungen (siehe Kasten).
- Bare-Metal-Server bieten keine Rollback-Funktionen. Die meisten Virtualisierungsplattformen ermöglichen es Administratoren, VM-Snapshots zu erstellen und zu einem späteren Zeitpunkt wieder auf den festgelegten Konfigurationsstatus zurückzusetzen. Container sind von Natur aus flüchtig, so dass es nichts gibt, worauf man zurückgreifen könnte. Sie können möglicherweise Rollback-Funktionen verwenden, die in das Host-Betriebssystem oder in das Dateisystem integriert sind – aber das ist oft ein weniger befriedigender Kompromiss. Um die Vorteile eines einfachen System-Rollbacks zu nutzen, müssen Sie Container auf einer VM hosten.
Container Orchestrator auf Bare Metal
Die meisten Container-Orchestrator, einschließlich Kubernetes und Docker Swarm Mode, unterstützen Bare-Metal-Implementierungen genauso gut wie Container in VMs oder in der Cloud.
Der einzige Nachteil ist, dass bestimmte Kubernetes-Distributionen wie Kubicorn nicht auf Bare Metal funktionieren. Wenn sich Ihr DevOps-Team auf eine bestimmte Orchestrator oder Kubernetes-Lösung verlässt, stellen Sie sicher, dass er Bare Metal unterstützen kann – und zwar, bevor Sie diesen Weg gehen.
Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!