Nach zwei Jahren der Entwicklung wurde die Version 3.0 des Projekts Kata Containers veröffentlicht, die ein Framework zur Durchführung von Containern mit Isolation durch vollständige Virtualisierungsmechanismen entwickelt. Das Projekt wurde von den Unternehmen Intel und Hyper ins Leben gerufen, durch die Kombination der Technologien Clear Containers und runV. Der Code des Projekts ist in den Programmiersprachen Go und Rust geschrieben und wird unter der Lizenz Apache 2.0 verbreitet. Die Weiterentwicklung des Projekts wird von einer Arbeitsgruppe überwacht, die unter der Schirmherrschaft der unabhängigen Organisation OpenStack Foundation gegründet wurde und an der Unternehmen wie Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE und ZTE teilnehmen.
Das Fundament von Kata bildet eine Runtime, die die Möglichkeit bietet, kompakte virtuelle Maschinen zu erstellen, die mit einem vollständigen Hypervisor betrieben werden, anstelle von traditionellen Containern, die einen gemeinsamen Linux-Kernel verwenden und mittels Namespaces und cgroups isoliert sind. Die Anwendung virtuelle Maschinen ermöglicht ein höheres Sicherheitsniveau, das vor Angriffen schützt, die durch die Ausnutzung von Schwachstellen im Linux-Kernel verursacht werden.
Kata Containers ist auf die Integration in bestehende Container-Isolierungsinfrastrukturen ausgerichtet und ermöglicht die Verwendung solcher virtuellen Maschinen zur Erhöhung der Sicherheit traditioneller Container. Das Projekt bietet Mechanismen zur Sicherstellung der Kompatibilität von leichten virtuellen Maschinen mit verschiedenen Container-Isolierungsinfrastrukturen, Container-Orchestrierungsplattformen und Spezifikationen wie OCI (Open Container Initiative), CRI (Container Runtime Interface) und CNI (Container Networking Interface). Werkzeuge zur Integration mit Docker, Kubernetes, QEMU und OpenStack sind verfügbar.

Die Integration mit Containerverwaltungsystemen erfolgt über eine Schicht, die die Containerverwaltung simuliert, die über eine gRPC-Schnittstelle und einen speziellen Proxy auf den verwaltenden Agenten in der virtuellen Maschine zugreift. Innerhalb der virtuellen Umgebung, die vom Hypervisor gestartet wird, kommt ein speziell optimierter Linux-Kernel zum Einsatz, der nur den minimalen Satz notwendiger Funktionen enthält.
Als Hypervisor wird Dragonball Sandbox (KVM-Edition, optimiert für Container) mit den Werkzeugen QEMU sowie Firecracker und Cloud Hypervisor unterstützt. Die Systemumgebung umfasst einen Initialisierungsdaemon und einen Agenten (Agent). Der Agent sorgt für die Ausführung benutzerdefinierter Container-Images im OCI-Format für Docker und im CRI-Format für Kubernetes. Bei der Verwendung mit Docker wird für jeden Container eine separate eine virtuelle Maschine, d.h. die über dem Hypervisor gestartete Umgebung wird für das verschachtelte Starten von Containern verwendet.

Zur Reduzierung des Speicherverbrauchs wird der DAX-Mechanismus (direkter Zugriff auf das Dateisystem, um den Seiten-Cache ohne Blockgeräte-Ebene zu umgehen) eingesetzt, und zur Deduplizierung identischer Speicherbereiche wird die KSM-Technologie (Kernel Samepage Merging) genutzt, die es ermöglicht, die Ressourcen des Host-Systems gemeinsam zu nutzen und ein gemeinsames Vorlagen-Sytemumfeld an verschiedene Gastsysteme anzuschließen.
In der neuen Version:
- Es wurde eine alternative Runtime (runtime-rs) vorgeschlagen, die die Container-Inhalte bildet und in Rust geschrieben ist (die zuvor bereitgestellte Runtime war in Go geschrieben). Die Runtime ist mit OCI, CRI-O und Containerd kompatibel, was die Verwendung mit Docker und Kubernetes ermöglicht.
- Ein neuer Hypervisor, dragonball, wurde auf Basis von KVM und rust-vmm vorgeschlagen.
- Die Unterstützung für den GPU-Passthrough wurde hinzugefügt, unter Verwendung von VFIO.
- Die Unterstützung für cgroup v2 wurde hinzugefügt.
- Die Unterstützung für das Ersetzen von Einstellungen ohne Änderung der Hauptkonfigurationsdatei wurde durch den Austausch von Blöcken in separaten Dateien ermöglicht, die im Verzeichnis "config.d/" platziert sind.
- In den Komponenten, die in Rust geschrieben sind, wurde eine neue Bibliothek für den sicheren Umgang mit Dateipfaden integriert.
- Die Komponente virtiofsd (in C geschrieben) wurde durch virtiofsd-rs (in Rust geschrieben) ersetzt.
- Die Unterstützung für die Sandbox-Isolation von QEMU-Komponenten wurde hinzugefügt.
- In QEMU wird für asynchronen Input/Output die API io_uring verwendet.
- Für QEMU und Cloud-hypervisor wurde die Unterstützung für Intel TDX (Trusted Domain Extensions) implementiert.
- Die Komponenten wurden aktualisiert: QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, Linux-Kernel 5.19.2.
Quelle: opennet.ru
