Die Ausgabe von Kata Containers 3.4 wurde veröffentlicht, die eine Plattform für die Ausführung von Containern unter Verwendung vollständiger Virtualisierungsmechanismen bietet. Das Projekt wurde von Intel und Hyper durch die Zusammenführung der Technologien Clear Containers und runV entwickelt. Der Code des Projekts ist in den Programmiersprachen Go und Rust geschrieben und wird unter der Apache 2.0-Lizenz veröffentlicht. Die Entwicklung des Projekts wird von einer Arbeitsgruppe geleitet, die unter der Schirmherrschaft der unabhängigen Organisation OpenInfra Foundation eingerichtet wurde, an der Unternehmen wie Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE und ZTE beteiligt sind.
Die Grundlage von Kata bildet ein Runtime, das die Erstellung kompakter virtueller Maschinen ermöglicht, die mit einem vollständigen Hypervisor betrieben werden, anstatt traditionelle Container zu verwenden, die einen gemeinsamen Linux-Kernel nutzen und mittels Namespaces und cgroups isoliert sind. Die Anwendung von virtuellen Maschinen ermöglicht ein höheres Maß an Sicherheit, das vor Angriffen schützt, die durch die Ausnutzung von Schwachstellen im Linux-Kernel verursacht werden.
Kata Containers ist auf die Integration in bestehende Containerisolierungsinfrastrukturen ausgerichtet und ermöglicht den Einsatz virtueller Maschinen zur Verbesserung des Schutzes traditioneller Container. Das Projekt bietet Mechanismen zur Gewährleistung der Kompatibilität von leichtgewichtigen virtuellen Maschinen mit verschiedenen Containerisolierungsinfrastrukturen, Containerorchestrierungsplattformen und Spezifikationen wie OCI (Open Container Initiative), CRI (Container Runtime Interface) und CNI (Container Networking Interface). Es stehen Integrationswerkzeuge für Docker, Kubernetes, QEMU und OpenStack zur Verfügung.
Die Integration mit Containerverwaltungsystemen erfolgt über eine Schicht, die die Containerverwaltung simuliert und über eine gRPC-Schnittstelle sowie einen speziellen Proxy auf den Verwaltungsagenten in der virtuellen Maschine zugreift. Innerhalb der von einem Hypervisor gestarteten virtuellen Umgebung wird ein speziell optimierter Linux-Kernel verwendet, der nur die minimal notwendige Funktionalität enthält.
Als Hypervisor wird Dragonball Sandbox (KVM-Edition, optimiert für Container) zusammen mit den Werkzeugen QEMU, Firecracker und Cloud Hypervisor unterstützt. Die Systemumgebung beinhaltet einen Initialisierungsdaemon und einen Agenten. Der Agent ermöglicht die Ausführung bestimmter benutzerdefinierter Container-Images im OCI-Format für Docker und CRI für Kubernetes. Bei gleichzeitiger Verwendung mit Docker wird für jeden Container eine separate virtuelle Maschine, d.h. die Umgebung, die über den Hypervisor läuft, wird für das verschachtelte Starten von Containern verwendet.

Zur Reduzierung des Speicherverbrauchs kommt der DAX-Mechanismus (Direkter Zugriff auf das Dateisystem ohne Seiten-Cache und ohne Verwendung von Blockgeräteschichten) zum Einsatz, während KSM (Kernel Samepage Merging) zur Deduplication identischer Speicherbereiche eingesetzt wird. Dies ermöglicht eine gemeinsame Nutzung der Ressourcen des Hosts und die Verbindung eines gemeinsamen Systemumgebungs-Templates zu verschiedenen Gastsystemen.
Für den Zugriff auf Container-Images wird das Nydus-Dateisystem eingesetzt, das Inhaltsadressierung für eine effiziente Zusammenarbeit mit Standard-Images nutzt. Nydus unterstützt das On-Demand-Image-Loading (lädt nur bei Bedarf), bietet die Deduplication wiederholter Daten und kann verschiedene Backends für die tatsächliche Speicherung verwenden. Die Kompatibilität mit POSIX wird bereitgestellt (im Gegensatz zu Composefs kombiniert die Nydus-Implementierung die Funktionen von OverlayFS mit EROFS oder einem FUSE-Modul).
In der neuen Version:
- Der Dragonball-VM-Manager hat die Unterstützung für das Hot-Plugging von GPUs und die Nutzung von MTRR (Memory-Type Range Registers) zur Organisation des Zugriffs auf physische Speicherbereiche hinzugefügt.
- In runtime-rs, der Implementierung des Runtimes in Rust, wurde eine vollständige Verarbeitung von Threads, pid und tid sichergestellt, und der qemu-Treiber wurde überarbeitet, der auf Systemen mit s390-Architektur (IBM Z) verwendet wird.
- Der Dienst zur Erstellung von Snapshots unter Verwendung des Nydus-Dateisystems wurde aktualisiert.
- Die Effizienz des Speichermanagements im Container-Image-Management-Service wurde erhöht.
- Das standardmäßige Mounten der cgroups-v2-Hierarchie während des Bootvorgangs mithilfe von systemd wurde aktiviert.
- Die Möglichkeit zur Festlegung eines Timeouts zur Begrenzung der Zeit für den Empfang sehr großer Images in Gast-Systemen wurde hinzugefügt.
- Die Unterstützung für den Build des OPA-Agenten (Open Policy Agent) für die Architekturen ppc64le und s390x wurde ergänzt.
Quelle: opennet.ru
