Sortie du système de gestion de conteneurs LXD 5.0

Canonical a publié la version du gestionnaire de conteneurs LXD 5.0 ​​​​et du système de fichiers virtuel LXCFS 5.0. Le code LXD est écrit en Go et distribué sous la licence Apache 2.0. La branche 5.0 est classée comme version de support à long terme - les mises à jour seront générées jusqu'en juin 2027.

En tant qu'environnement d'exécution pour lancer des conteneurs, la boîte à outils LXC est utilisée, qui comprend la bibliothèque liblxc, un ensemble d'utilitaires (lxc-create, lxc-start, lxc-stop, lxc-ls, etc.), des modèles pour créer des conteneurs et un ensemble de liaisons pour divers langages de programmation. L'isolation est effectuée à l'aide des mécanismes standard du noyau Linux. Pour isoler les processus, la pile réseau ipc, les uts, les ID utilisateur et les points de montage, le mécanisme des espaces de noms est utilisé. Les groupes de contrôle sont utilisés pour limiter les ressources. Pour réduire les privilèges et limiter l'accès, des fonctionnalités du noyau telles que les profils Apparmor et SELinux, les politiques Seccomp, les Chroots (pivot_root) et les capacités sont utilisées.

En plus de LXC, LXD utilise également des composants des projets CRIU et QEMU. Si LXC est une boîte à outils de bas niveau pour la manipulation au niveau de conteneurs individuels, alors LXD fournit des outils de gestion centralisée des conteneurs déployés dans un cluster de plusieurs serveurs. LXD est implémenté en tant que processus d'arrière-plan qui accepte les requêtes sur le réseau via l'API REST et prend en charge divers backends de stockage (arborescence de répertoires, ZFS, Btrfs, LVM), les instantanés avec une tranche d'état, la migration en direct des conteneurs en cours d'exécution d'une machine à une autre, et des outils pour stocker des conteneurs d'images. LXCFS est utilisé pour simuler les pseudo-FS /proc et /sys dans des conteneurs, et la représentation virtualisée cgroupfs pour donner aux conteneurs l'apparence d'un système indépendant régulier.

Principales améliorations :

  • Possibilité de branchement et débranchement à chaud de lecteurs et périphériques USB. Dans une machine virtuelle, un nouveau disque est détecté par l'apparition d'un nouveau périphérique sur le bus SCSI, et un périphérique USB est détecté par la génération d'un événement USB hotplug.
  • Il est possible de lancer LXD même s'il est impossible d'établir une connexion réseau, par exemple en raison de l'absence du périphérique réseau nécessaire. Au lieu d'afficher une erreur au démarrage, LXD lance désormais le nombre maximum d'environnements possible dans les conditions actuelles, et les environnements restants sont lancés une fois la connexion réseau établie.
  • Un nouveau rôle de membre du cluster a été ajouté - ovn-chassis, destiné aux clusters qui utilisent OVN (Open Virtual Network) pour la communication réseau (en attribuant le rôle ovn-chassis, vous pouvez sélectionner des serveurs pour exécuter les fonctions des routeurs OVN).
  • Un mode optimisé de mise à jour du contenu des partitions de stockage a été proposé. Dans les versions précédentes, la mise à jour consistait à copier d'abord une instance ou une partition de conteneur, par exemple à l'aide de la fonctionnalité d'envoi/réception de zfs ou btrfs, après quoi la copie créée était synchronisée en exécutant le programme rsync. Pour améliorer l'efficacité de la mise à jour des machines virtuelles, la nouvelle version utilise une logique de migration avancée dans laquelle, si les serveurs source et de destination utilisent le même pool de stockage, les instantanés et les opérations d'envoi/réception sont automatiquement utilisés à la place de rsync.
  • La logique d'identification des environnements dans cloud-init a été retravaillée : au lieu des noms d'environnement, l'UUID est désormais utilisé comme identifiant d'instance.
  • Ajout de la prise en charge de l'accrochage de l'appel système sched_setscheduler, permettant aux conteneurs non privilégiés de modifier les priorités des processus.
  • L'option lvm.thinpool_metadata_size a été implémentée pour contrôler la taille des métadonnées dans Thinpool.
  • Le format de fichier avec les informations réseau pour lxc a été repensé. Ajout de la prise en charge des données sur la liaison d'interface, les ponts réseau, les réseaux VLAN et OVN.
  • Les exigences pour les versions minimales des composants ont été augmentées : noyau Linux 5.4, Go 1.18, LXC 4.0.x et QEMU 6.0.
  • LXCFS 5 a ajouté la prise en charge de la hiérarchie de groupe de contrôle unifiée (cgroup2), implémenté /proc/slabinfo et /sys/devices/system/cpu et utilisé la boîte à outils meson pour l'assemblage.

Source: opennet.ru

Ajouter un commentaire