
Auf der AWS re: Invent 2018, die derzeit in Las Vegas stattfindet, fand
die Ankündigung von
Firecracker statt , einer neuen Open-Source-Virtualisierungstechnologie auf Basis von Linux KVM. Die Autoren versprechen, dass Sie damit "in Sekundenbruchteilen leichte mikro-virtuelle Maschinen (microVMs) in einer nicht virtualisierten Umgebung ausführen können und die Vorteile herkömmlicher VMs - in Form der Sicherheit und Isolierung von Workloads und Containern - in Form einer effizienten Ressourcennutzung nutzen können."
Hintergrund
Firecracker wird von Mitarbeitern von Amazon Web Services entwickelt, die sich zum Ziel gesetzt haben, den Ressourcenverbrauch und die Gesamtlebensdauer für Benutzer von Diensten wie AWS Lambda (eingeführt im Jahr 2014 und heute können wir sagen, dass das Modell ohne Server
weiterhin bestehen wird) und AWS Fargate (vor einem Jahr erschienen) zu verbessern )
Das Projekt basiert auf der Open Source-Entwicklung von Google -
Crosvm von Chromium OS, das in Rust geschrieben ist und für den Start von Betriebssystemen mit
Gerätevirtualisierung verantwortlich ist (jedoch ohne Emulation von echter Hardware). Daher ist Firecracker-Code auch
in der Sprache Rust geschrieben , und die Autoren versprechen, ihre Korrekturen an die Codebasis des übergeordneten Projekts zurückzugeben, obwohl die Projekte selbst in ihrem Zweck stark voneinander abweichen.
Die erste Veröffentlichung von Firecracker -
0.1.0 - fand im März dieses Jahres statt, und die letzte
Veröffentlichung -
0.11.0 - erst vor wenigen Tagen. Ich habe kurz nach der Internet-Ankündigung von Firecracker mit dem Schreiben dieses Artikels begonnen, als das Projekt auf GitHub 76 Sterne hatte, und zum Zeitpunkt der Veröffentlichung waren es mehr als 500.

Firecracker-Funktionen
Die Hauptkomponente von Firecracker ist der Virtual Machine Monitor (VMM), der mithilfe von Linux KVM die sogenannten microVMs erstellt und ausführt. Die Autoren nennen ihr Produkt "eine Cloud-basierte Alternative zu QEMU" (von Kata Containers verwendet), "die nur für den sicheren und effizienten Start von Containern gedacht ist".
Und hier ist ein Beispiel für ein Hostsystem, auf dem die genannten microVMs ausgeführt werden:

Entwickler streben nach Minimalismus, indem sie nur das Notwendigste in das Produkt einbeziehen und dadurch minimale Speicherkosten sicherstellen und gleichzeitig das Potenzial für potenzielle Schwachstellen verringern. In Firecracker werden
nur 4 Geräte emuliert: virtio-net, virtio-block, serielle Konsole und eine Tastatur mit 1 Taste, mit der der Betrieb von microVM gestoppt wird. Derzeit werden Betriebssysteme auf Basis des
Linux-Kernels Version 4.14 ( Veröffentlichung ab November letzten Jahres) und höher als Host- und Gastbetriebssysteme unterstützt, und die aktuellen Pläne der Entwickler sehen vor, die letzten beiden stabilen Zweige des Linux-Kernels zu unterstützen. In Bezug auf die Hardware werden bisher nur Intel-Prozessoren unterstützt, aber AMD und ARM stehen auf der Tagesordnung.
Firecracker selbst besteht aus einem einzelnen VMM-Prozess, der beim Start die Endpunkt-API (RESTful) auf dem Host-Computer verfügbar macht. Die API selbst wird im OpenAPI-Format beschrieben und ermöglicht es Ihnen insbesondere, microVM mit den angegebenen Parametern (Kernel-Image, Root-Dateisystem, Startargumente) zu starten und zu stoppen, virtuelle Maschinen zu konfigurieren (Anzahl der vCPUs, RAM, Vorlage für die CPU) und hinzuzufügen Netzwerkschnittstellen, Festplatten (als Blockgeräte dargestellt, Lese- / Schreib- und Nur-Lese-Modi verfügbar) konfigurieren das System für Protokolle und Metriken.
Die Hauptvorteile von Firecracker sind Sicherheit (Fokus auf Multi-Tenant-Computing, mehrere Isolationsstufen), hohe Leistung (microVM kann
in 125 ms gestartet werden, und die Autoren versprechen, diese Zahl im nächsten Jahr zu verbessern), minimaler Overhead (jede microVM verbraucht etwa 5 Megabyte) Speicher). Was dem Projekt zusätzliches Gewicht verleiht - es wurde bereits "im Kampf" getestet und bietet die Arbeit einer Reihe von AWS-Diensten (einschließlich der erwähnten Lambda und Fargate).
Sicherheitsdetails
Unter den Hauptfunktionen von Firecracker, die auf die Gewährleistung eines hohen Sicherheitsniveaus ausgerichtet sind, werden folgende erwähnt:
- Einfaches Gastmodell (für alle Gäste ist nur das Minimum vorgesehen - siehe oben ca. 4 Geräte).
- Isolieren des Firecracker-Prozesses mit cgroups und seccomp BPF sowie einer begrenzten Anzahl zulässiger Systemaufrufe.
- Statische Verknüpfung des Firecracker-Prozesses, um ihn isoliert von der Hostumgebung zu starten.
Firecracker Demo
Der AWS-Blog
zeigte, wie Sie microVMs in Aktion testen können. Erstellen Sie dazu einfach eine i3.metal-Instanz und laden Sie 3 Dateien hoch (ausführbare Firecracker-Datei, Root-FS-Image, Linux-Kernel):

Danach - setzen Sie die notwendigen Rechte auf / dev / kvm:
$ sudo setfacl -mu:${USER}:rw /dev/kvm
Festlegen der Konfiguration für den ersten Gastcomputer:
$ curl --unix-socket /tmp/firecracker.sock -i \ -X PUT "http://localhost/machine-config" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"vcpu_count\": 1, \"mem_size_mib\": 512 }"
... dann der Kern für sie:
$ curl --unix-socket /tmp/firecracker.sock -i \ -X PUT "http://localhost/boot-source" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"kernel_image_path\": \"./hello-vmlinux.bin\", \"boot_args\": \"console=ttyS0 reboot=k panic=1 pci=off\" }"
... und root FS:
$ curl --unix-socket /tmp/firecracker.sock -i \ -X PUT "http://localhost/drives/rootfs" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"drive_id\": \"rootfs\", \"path_on_host\": \"./hello-rootfs.ext4\", \"is_root_device\": true, \"is_read_only\": false }"
Es bleibt, um den Gast tatsächlich zu starten:
Ergebnis:

Was ist mit anderen Containerprojekten?
Obwohl die Autoren von Firecracker die „Integration in beliebte Containerlaufzeiten“ versprechen,
antworten sie
auf die Frage, ob das Projekt mit Kubernetes-, Docker- oder Kata-Containern verwendet werden kann:
"Noch nicht. Wir entwickeln Firecracker als Open Source-Projekt, da es einen wesentlich anderen Sicherheitsansatz beim Starten von Containern bietet. Wir hoffen, dass andere Communities, die Open Source-Technologien für Container entwickeln, dies nützlich finden. „Wir arbeiten daran, dass Firecracker nahtlos in das Container-Ökosystem integriert wird - mit dem Ziel einer nahtlosen Integration in die Zukunft, um mehr Optionen für die Isolierung von Container-Workloads bereitzustellen.“
PS
Lesen Sie auch in unserem Blog: