Veröffentlichung der Tools zur Verwaltung von Containern LXC 6.0, Incus 6.0 und LXD 5.21.1

Die Linux-Containers-Community hat die Version des Tools für die Verwaltung isolierter LXC-Container 6.0 veröffentlicht, das ein Runtime bereitstellt, das sowohl für den Betrieb von Containern mit vollständiger Systemumgebung, die virtuellen Maschinen ähnlich sind, als auch für die Ausführung von unprivilegierten Containern einzelner Anwendungen (OCI) geeignet ist. LXC gehört zu den Low-Level-Tools, die auf der Ebene einzelner Container arbeiten. Für eine zentralisierte Verwaltung von in einem Cluster aus mehreren Servern bereitgestellten Containern entwickeln sich die Systeme Incus und LXD auf Basis von LXC. Der Branch LXC 6.0 gehört zu den Versionen mit langfristiger Unterstützung, für die Updates über einen Zeitraum von 5 Jahren (bis 2029) bereitgestellt werden. Der LXC-Code ist in C geschrieben und wird unter der GPLv2-Lizenz veröffentlicht.

Die LXC-Komponente umfasst die Bibliothek liblxc, eine Sammlung von Dienstprogrammen (lxc-create, lxc-start, lxc-stop, lxc-ls usw.), Vorlagen für den Aufbau von Containern und eine Reihe von Bindings für verschiedene Programmiersprachen. Die Isolierung erfolgt durch die integrierten Mechanismen des Linux-Kernels. Für die Isolierung von Prozessen, Netzwerkstacks, IPC, UTS, Benutzer-IDs und Mount-Punkten wird der Mechanismus der Namespaces verwendet. Zur Ressourcenkontrolle kommen cgroups zum Einsatz. Zur Herabsetzung von Berechtigungen und zur Zugangsbeschränkung wurden Kernelfunktionen wie Apparmor- und SELinux-Profile, Seccomp-Richtlinien, Chroots (pivot_root) und capabilities genutzt.

Hauptänderungen:

  • Es wird die Möglichkeit bereitgestellt, eine universelle ausführbare Datei lxc zu erstellen, die alle zuvor als einzelne „lxc-*“-Utilities bereitgestellten Befehle in einem Tool vereint. Für den Bau der zusammengefassten ausführbaren Datei wurde die Option „tools-multicall=true“ vorgeschlagen, bei der alle alten separaten Utilities als symbolische Links auf das lxc-Tool erstellt werden. Der Bau in Form einer einzigen ausführbaren Datei ermöglicht eine deutliche Reduzierung des Speicherplatzverbrauchs, der für eingebettete Systeme wichtig ist.
  • In die Bibliothek liblxc wurde die Funktion set_timeout hinzugefügt, die es ermöglicht, einen Timeout für jegliche Interaktionen mit dem LXC-Monitor festzulegen.
  • Im Interface der Netzwerkbrücken ist lxcbr0 standardmäßig aktiviert. IPv6-Unterstützung mit Adressen aus dem IPv6 ULA (Unique Local Address) Subnetz.
  • In das Tool lxc-usernsexec wurden die Optionen „-u“ und „-g“ zur Änderung der Benutzer- und Gruppenidentifikatoren (UID und GID) hinzugefügt.
  • Im Tool lxc-checkconfig wird die Version nur angezeigt, wenn der Befehl lxc-start vorhanden ist, und es wurde eine Information über die maximal zulässige Anzahl jeder Art von Namensräumen hinzugefügt.
  • Unterstützung für Container-Abbilder im OCI-Format wurde hinzugefügt, bei denen zur Kompression der Informationen das Squashfs-Filesystem verwendet wird.
  • Für die Interaktion mit systemd über D-Bus wird eine separate Bibliothek libdbus-1 anstelle von libsystemd verwendet.
  • Die Unterstützung für das Init-System Upstart wurde eingestellt.

Gleichzeitig wurde die Veröffentlichung des Projekts Incus bekannt gegeben, im Rahmen dessen die Community von Linux Containers einen Fork des Container-Management-Systems LXD entwickelt, das von dem ehemaligen Entwicklerteam, das LXD ursprünglich geschaffen hat, erstellt wurde. Der Code von Incus ist in der Programmiersprache Go geschrieben und wird unter der Lizenz Apache 2.0 veröffentlicht. Incus 6.0 wird zunächst als stabile Version positioniert, für die ein langer Aktualisierungszeitraum (LTS) gewährleistet wird. Zu den Änderungen in Incus 6.0 gehört die Möglichkeit, Netzwerk-Interfaces über die API bridge.external_interfaces zu erstellen, verbesserte Unterstützung für die Authentifizierung über JWT (JSON Web Token), Unterstützung für USB und die Anzeige detaillierter Systeminformationen mit dem Befehl „incus info —resources“, sowie die Unterstützung der LXD-Version 5.21 im Tool lxd-to-incus.

Incus und LXD bieten Mittel zur zentralen Verwaltung von Containern und virtuellen Maschinen, die sowohl auf einem einzelnen Host als auch in einem Cluster von mehreren Host-Systemen bereitgestellt werden. Server. Das Projekt wird als Hintergrundprozess implementiert, der Anfragen über das Netzwerk über eine REST API akzeptiert und verschiedene Backend-Speicher (Verzeichnisbaum, ZFS, Btrfs, LVM) unterstützt, Snapshots mit Zustandserfassung, Live-Migration von laufenden Containern von einer Maschine zur anderen und Mittel zur Speicherung von Container-Images. Als Runtime für die Ausführung von Containern wird das LXC-Toolkit verwendet. Die Isolierung erfolgt durch standardmäßige Mechanismen des Linux-Kernels (Namespaces, cgroups, Apparmor, SELinux, Seccomp).

Die Community von Linux Containers hat die Entwicklung von LXD geleitet, bevor Canonical beschloss, LXD in ein Unternehmensprojekt zu transformieren. Ziel des Forks ist es, eine von der Community verwaltete und unabhängige Alternative zum LXD-Projekt, das unter der Kontrolle von Canonical steht, bereitzustellen. Die Gründung von Incus ermöglicht auch die Behebung einiger konzeptioneller Fehler, die bei der Entwicklung von LXD gemacht wurden und zuvor ohne Verletzung der Abwärtskompatibilität nicht korrigiert werden konnten.

Das Unternehmen Canonical hat eine neue Version des Container-Management-Systems LXD 5.21.1 veröffentlicht. Der Branch LXD 5.21 ist als LTS gekennzeichnet und wird bis Juni 2029 unterstützt. Der von den Mitarbeitern von Canonical hinzugefügte Code wird unter der Lizenz AGPLv3 bereitgestellt, während der Code von Dritten, an dem Canonical keine Eigentumsrechte hat, unter Apache 2.0 bleibt. Zu den funktionalen Änderungen in LXD 5.21.1 gehört die Übertragung des Snap-Pakets von LXD auf die Branches LXC 6.0 und LXCFS 6.0. Es wurde eine Erweiterung storage_volumes_all zur API hinzugefügt sowie ein zugehöriger Handler /1.0/storage_volumes, um eine Liste aller Speicherbereiche anzuzeigen. Eine Erweiterung instances_files_modify_permissions wurde hinzugefügt, um über die API die Zugriffsrechte auf vorhandene Dateien zu ändern.

Die Veröffentlichung des virtuellen Dateisystems LXCFS 6.0 ist verfügbar, das zur Simulation in Containern der Pseudo-Dateisysteme /proc und /sys verwendet wird, sowie zur virtualisierten Darstellung von cgroupfs für Distributionen ohne Unterstützung von cgroup-Namensräumen. In der neuen Version wurde die Option "--enable-cgroup" hinzugefügt, die die Steuerung der integrierten Funktionalität zur Erstellung eines virtuellen Baums von cgroupfs für Container unter Verwendung von cgroupv1 ermöglicht (derzeit unterstützen die meisten Distributionen die vom Kernel bereitgestellten Namensräume für cgroup, daher hat die standardmäßige Aktivierung der integrierten alternativen Implementierung an Bedeutung verloren und ist nun optional). Darüber hinaus wurde in LXCFS 6.0 die Filterung von CPU beim Erstellen der Datei /sys/devices/system/cpu je nach Zustand online/offline eingestellt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4