Firecracker: Amazon legt Mini-VMs und Hypervisor für Container offen
Container starten schnell und sind vergleichsweise klein, virtuelle Maschinen (VMs) bieten dagegen eine größere Sicherheit dank Hardware-Virtualisierung sowie eine strikte Isolierung. Das Open-Source-Projekt Firecracker von Amazon soll diese beiden Konzepte vereinen(öffnet im neuen Fenster) , in dem es Container in sehr kleine VMs steckt. Neu sind derartige Ideen nicht. So verfolgt das Projekt der Kata Containers ein ähnliches Ziel und auch der von Amazon nun bereitgestellte Code basiert auf Arbeiten von Googles Chromium-Team.
Hauptbestandteil von Firecracker ist ein eigener Hypervisor (Virtual Machine Manager), der direkt auf der Kernel-eigenen VM (KVM) basiert. Grundlage hierfür bildet das Crosvm-Projekt von Googles Chromium-Team , das in Rust geschrieben ist und für die Linux-Anwendungen in Chrome OS verwendet wird. Diese Basis ist wohl neben generellen Überlegungen einer der Gründe dafür, dass Firecracker ebenfalls komplett in Rust geschrieben ist. Amazon plant eigenen Angaben zufolge, trotz des mittlerweile voneinander abweichenden Codes weiter mit dem Chromium-Team zusammenzuarbeiten.
Klein und isoliert
Die eigentliche Firecracker-Anwendung nutzt diesen VMM, um die minimalen VMs aufzusetzen und zu starten. Firecracker selbst wird dabei von einer Jailer(öffnet im neuen Fenster) genannten Anwendung gestartet, die Systemressourcen bereitstellt und konfiguriert wie etwa Cgroups. Jailer verwaltet außerdem Berechtigungen, beziehungsweise entzieht diese dem System, sobald sie nicht mehr benötigt werden. Darüber hinaus werden mit Jailer Seccomp-Filter gesetzt, die Zugriffe des Gast-Codes einschränken sollen. Kernel-Namespaces werden als weitere Barriere genutzt.
Die Kommunikation mit Firecracker läuft über eine Rest-API, mit der die VMs letztlich gestartet und gesteuert werden können. Standardmäßig nutzen die VMs etwa einen virtualisierten CPU-Kern und 128 MByte RAM, was über die API jedoch angepasst werden kann. Darüber hinaus verwenden die VMs lediglich ein per Virtio bereitgestelltes Netzwerkgerät sowie ein Blockgerät, die beide über ein Rate-Limiting verfügen. Hinzu kommen eine serielle Konsole sowie ein minimaler Tastaturtreiber, mit dem die VMs zurückgesetzt werden können.
Zum Start einer VM(öffnet im neuen Fenster) benötigen Nutzer ein entpacktes Kernel-Image sowie ein Root-Dateisystem, was Amazon beides bereitstellt. Es muss mindestens die Linux-Version 4.14 genutzt werden. Amazon stellt als Root-System eine aktuelle Version von Alpine-Linux bereit, das sich insbesondere als Container-Host großer Beliebtheit erfreut. Der Betrieb eigener Container in dem System sollte also keine allzu großen Probleme bereiten.
Open Source für das Container-Ökosystem
Derzeit nutzt Firecracker noch ausschließlich die Hardware-Virtualisierung von Intel, die Unterstützung für Hardware von AMD und ARM soll aber noch folgen. Darüber hinaus ist eines der Ziele der Offenlegung des Projektes explizit, die Technik so aufzubereiten, dass diese von der Community leicht in bestehende Container-Ökosysteme integriert werden kann. Das soll Nutzern letztlich mehr Wahlmöglichkeiten bieten.
Die größten Unterschiede zu dem ähnlich gelagerten Projekt der Kata-Containers ist laut der Projektwebseite die Wahl des VMMs und die gebotene Funktionalität. So nutzt das Kata-Containers-Projekt Qemu zur Verwaltung der KVM. In den FAQ von Firecracker werden außerdem die wenigen emulierten Geräte sowie die besonders kurze Startzeit des Kernels von unter 125 ms genannt.
Amazon nutzt Firecracker eigenen Angaben zufolge selbst als Basis für seinen Serverless-Dienst Lambda sowie für den Dienst Fargate , der Container ohne große Infrastruktur bereitstellen soll. Der Code von Firecracker(öffnet im neuen Fenster) findet sich auf Github. Dort stehen auch weitere Details zu dem Projekt(öffnet im neuen Fenster) bereit.
- Anzeige Hier geht es zum Handbuch Skalierbare Container-Infrastrukturen bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.