Die zweite Ausgabe des Incus-Projekts wurde vorgestellt, in dessen Rahmen die Linux-Container-Gemeinschaft einen Fork des Container-Management-Systems LXD entwickelt, das von dem ursprünglichen Entwicklerteam erstellt wurde, welches LXD ins Leben gerufen hat. Der Code von Incus ist in Go geschrieben und wird unter der Lizenz Apache 2.0 veröffentlicht.
Wir erinnern daran, dass die Community der Linux-Container die Entwicklung von LXD beaufsichtigte, bevor Canonical beschloss, LXD als eigenes Unternehmensprojekt weiterzuentwickeln. Das Ziel des Forks ist es, eine verwaltete, von der Community unabhängige Alternative zu dem von Canonical kontrollierten Projekt LXD bereitzustellen. Im Rahmen des Projekts Incus ist auch geplant, einige konzeptionelle Fehler zu beheben, die bei der Entwicklung von LXD gemacht wurden und die zuvor ohne Kompromittierung der Abwärtskompatibilität nicht behoben werden konnten.
Incus bietet Mittel zur zentralen Verwaltung von Containern und virtuellen Maschinen, die sowohl auf einem einzelnen Host als auch in einem Cluster von mehreren bereitgestellt werden. Server. Das Projekt wird als Hintergrundprozess umgesetzt, der über das Netzwerk Anfragen über die REST-API entgegennimmt und verschiedene Backend-Speicher unterstützt (Verzeichnisbaum, ZFS, Btrfs, LVM). Es ermöglicht Snapshots mit Zustandsausschnitten, Live-Migration laufender Container von einer Maschine zur anderen sowie Tools zur Speicherung von Container-Images. Als Runtime zum Starten von Containern wird das LXC-Toolset verwendet, das die Bibliothek liblxc, eine Reihe von Dienstprogrammen (lxc-create, lxc-start, lxc-stop, lxc-ls usw.), Vorlagen zum Erstellen von Containern und eine Sammlung von Bindungen für verschiedene Programmiersprachen umfasst. Die Isolation erfolgt mithilfe der Standardmechanismen des Linux-Kernels (Namespaces, cgroups, AppArmor, SELinux, Seccomp).
Die auffälligsten Änderungen:
- Das Tool lxd-to-incus, das den Übergang von LXD zu Incus automatisiert, hat die Unterstützung für die Version LXD 5.19 hinzugefügt und ermöglicht die Migration nicht nur einzelner Hosts, sondern auch von LXD-Clustern.
- In virtuellen Maschinen wurde die Unterstützung für die Erstellung von Speichern auf NVME-Basis hinzugefügt. Um den Festplattentyp anzugeben, wurde ein neuer Konfigurationsparameter „io.bus“ eingeführt, der standardmäßig auf „virtio-scsi“ gesetzt ist. Bei einer Änderung des Wertes auf „nvme“ wird der Speicher im virtuellen System als NVME SSD angezeigt.
- Für Container-Images wurde der Parameter „requirements.privileged“ implementiert, der auf „false“ gesetzt werden kann, um die Verwendung des Images in privilegierten Containern zu untersagen. Diese Einstellung kann beispielsweise für Images mit der Distribution NixOS angewendet werden, die derzeit nicht mit privilegierten Containern kompatibel sind.
- Die Implementierung des Snapshot-Modus wurde von LXD auf die Serverseite übertragen, Serverwas die Vorgänge zum Kopieren von Partitionen erheblich beschleunigt, indem die Datenumleitung über den Client ausgeschlossen wird.
- Statisch gebaute Versionen für ARM64-Systeme werden bereitgestellt.
Quelle: opennet.ru
