Original-URL des Artikels: https://www.golem.de/news/firecracker-amazon-legt-mini-vms-und-hypervisor-fuer-container-offen-1811-137942.html    Veröffentlicht: 27.11.2018 14:30    Kurz-URL: https://glm.io/137942

Firecracker

Amazon legt Mini-VMs und Hypervisor für Container offen

Mit dem Open-Source-Projekt Firecracker legt Amazon die Grundlage für seinen Serverless-Dienst Lambda offen sowie für Fargate, den Container-Dienst ohne Infrastruktur. Firecracker ist in Rust geschrieben, bietet minimale VMs für Container samt Hypervisor und basiert auf Code von Google.

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, 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 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 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 findet sich auf Github. Dort stehen auch weitere Details zu dem Projekt bereit.  (sg)


Verwandte Artikel:
AWS: Amazon bietet seine Machine-Learning-Tutorials kostenlos an   
(27.11.2018, https://glm.io/137939 )
Container-Orchestrierung: Google übergibt Kubernetes-Infrastruktur an Community   
(30.08.2018, https://glm.io/136284 )
Hypervisor: OpenBSD bekommt native Virtualisierung   
(01.09.2015, https://glm.io/116056 )
Red Hat: Beta von RHEL 8 zeigt modulare App-Streams   
(16.11.2018, https://glm.io/137765 )
Container: Intels Clear-Linux-Distro wechselt zu Kata Containers   
(12.07.2018, https://glm.io/135449 )

© 1997–2019 Golem.de, https://www.golem.de/