Retour à l’aperçu de l’actualité

Incus 0.5.1 est maintenant disponible

29 janv. 2024

Introduction

L’équipe d’Incus est heureuse d’annoncer la sortie d’Incus 0.5.1 !

Il est inhabituel pour nous de publier une version mineure en plus des versions de fonctionnalité mensuelles. Mais nous avons estimé que c’était nécessaire, en raison de plusieurs corrections importantes de bugs et de l’ajout de fonctionnalités mineures pour les personnes utilisant des machines virtuelles CentOS/Alma/Rocky.

La plupart des changements ont lieu côté serveur, donc si vous n’utilisez que le client en ligne de commande, il n’y a pas d’urgence à migrer de la 0.5 à la 0.5.1.

image|690x454

Comme d’habitude, vous pouvez l’essayer vous-même en ligne : https://linuxcontainers.org/incus/try-it/

Points marquants

Accès alternatif à l’agent pour les VM

Le mécanisme de distribution de l’agent Incus pour les VM a quelque peu changé avec Incus 0.5.
Par le passé, nous avions un seul partage nommé config, qui incluait à la fois la configuration de l’agent spécifique à l’instance et le binaire incus-agent.

Cette solution était inutilement coûteuse, puisqu’elle nécessitait une copie de incus-agent pour chaque VM (15–20 Mo), mais c’était toutefois gérable. Le partage était exposé à la fois en 9p et en virtiofs ; deux processus étaient donc exécutés sur le système hôte pour chaque VM Incus.

Puisque nous supportons maintenant plusieurs binaires pour les agents, les copier pour chaque VM n’était plus vraiment une option, donc un partage séparé a été mis en place spécifiquement pour ces binaires. Et comme nous ne voulions pas rajouter encore deux nouveaux processus par VM, nous avons décidé de ne rendre ces partages disponibles qu’en 9p.

Nos tests sur de nombreuses images, incluant CentOS 7, ont montré que cela fonctionnait bien. 9p est moins performant que virtiofs, mais comme ces partages ne sont utilisés que pendant quelques secondes à chaque démarrage de VM, ce n’est pas vraiment un problème. Les partages définis par les utilisateurs sont toujours exposés en virtiofs, donc ils continuent à profiter de ses bonnes performances.

Il nous a échappé que, pour une raison ou une autre, CentOS 8-Stream, CentOS 9-Stream et d’autres distributions dérivées de RHEL 8/9, ne fournissent pas de driver noyau pour 9p

Cela signifie que ces instances n’étaient plus capables de récupérer leur agent, rendant inopérants incus exec et incus file.

Nous n’avons pas vraiment envie de lancer 4 processus sur l’hôte pour chaque VM Incus pour convenir à ces quelques images. Au lieu de cela, nous proposons dans Incus 0.5.1 un disque spécial pouvant être attaché à ces VM, reconnu comme un CD-ROM et non pas un système de fichiers en réseau, fournissant les fichiers nécessaires.

Pour l’utiliser sur CentOS 9-Stream, il faut faire :

incus create images:centos/9-Stream centos --vm
incus config device add centos agent disk source=agent:config
incus start centos

Si vous lancez de nombreuses VM de ce type, il peut être préférable de créer un profil dédié :

incus profile create vm-agent
incus profile device add vm-agent agent disk source=agent:config

De là, vous pouvez lancer :

incus launch images:centos/9-Stream centos --vm -p default -p vm-agent

Cela n’est pas idéal et rajoute quelques étapes lors de la création des VM pour ces distributions, mais ce nouveau mécanisme offre désormais un moyen de faire fonctionner l’agent dans à peu près n’importe quel environnement.

NOTE : Nous préférons ne pas monter ce disque additionnel en permanence, puisqu’il demande des ressources et de l’espace disque supplémentaires sur l’hôte pour la génération du cdrom. Il est préférable de ne l’ajouter qu’en cas de besoin.

Correction de la gestion des instances arrêtées lors d’une évacuation

Un bug introduit avec Incus 0.5 provoquait la relocalisation des instances arrêtées sur d’autres systèmes pendant une évacuation, même si l’instance était configurée pour rester là où elle était.

Ce problème a été corrigé et les instances utilisant stopped, force-stop ou stateful-stop sont désormais assurées de rester sur leur serveur actuel.

Amélioration des performances de la base de données

Les améliorations apportées dans Incus 0.5 ont accidentellement provoqué l’apparition de transactions imbriquées lors de la récupération des informations réseau pour un grand nombre d’instances.

Le problème devenait vraiment visible lors de l’utilisation d’un cluster Incus qui sert des zones DNS et dont les métriques sont récupérées régulièrement par Prometheus. Cette combinaison donnait lieu à d’importants pics de requêtes dans l’API toutes les 15 secondes environ, entraînant des timeouts et nouvelles tentatives, amenant en cascade à un empilement de requêtes et à des timeouts.

La logique a été modifiée pour supprimer ces transactions imbriquées, et d’autres optimisations ont été faites pour diminuer les interactions avec la base de données lors de l’utilisation de certaines commandes.

Liste complète des changements

Voici une liste complète de tous les changements apportés par cette version :

Liste complète des commits
  • Translated using Weblate (German)
  • Translated using Weblate (Dutch)
  • incus/action: Fix resume
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • doc: Remove net_prio
  • incusd/cgroup: Fully remove net_prio
  • incusd/warningtype: Remove net_prio
  • incusd/cgroup: Look for full cgroup controllers list at the root
  • incusd/dns: Serialize DNS queries
  • incusd/network: Optimize UsedByInstanceDevices
  • incusd/backups: Simplify missing backup errors
  • tests: Update for current backup errors
  • incusd/cluster: Optimize ConnectIfInstanceIsRemote
  • incusd/instance/qemu/agent-loader: Fix to work with busybox
  • doc/installing.md: add a gentoo-wiki link under Gentoo section
  • Translated using Weblate (French)
  • Translated using Weblate (Dutch)
  • incusd/device/disk: Better cleanup cloud-init ISO
  • incusd/instance/qemu/qmp: Add Eject command
  • incusd/instance/qemu/qmp: Handle eject requests
  • api: agent_config_drive
  • doc/devices/disk: Add agent:config drive
  • incusd/device/disk: Add agent config drive
  • incusd/project: Add support for agent config drive
  • incusd/instance/qemu/agent-loader: Handle agent drive
  • incusd/db/warningtype: gofmt
  • incusd/loki: Sort lifecycle context keys
  • incusd/instance/qemu/agent-loader: Don't hardcode paths
  • incusd/cluster: Fix evacuation of stopped instances

Documentation

La documentation d’Incus peut être consultée sur :
https://linuxcontainers.org/incus/docs/main/

Paquets

Incus ne fournit pas de paquet d’installation mais bien un tarball à chaque version. Vous trouverez ci-dessous différentes solutions pour mettre Incus en service.

Installation du serveur Incus sous Linux

Incus est disponible sur la plupart des distributions Linux courantes. Vous trouverez des instructions d’installation détaillées dans notre documentation.

https://linuxcontainers.org/incus/docs/main/installing/

Paquet Homebrew du client Incus

Le client Incus est disponible sur Homebrew pour Linux et macOS.

https://formulae.brew.sh/formula/incus

Paquet Chocolatey du client Incus

Le client Incus est disponible sur Chocolatey pour les utilisateurs de Windows.

https://community.chocolatey.org/packages/incus/0.5.1

Paquet Winget du client Incus

Le client Incus est aussi disponible sur Winget pour les utilisateurs de Windows.

https://winstall.app/apps/LinuxContainers.Incus

Support

À ce stade, chaque version d’Incus ne sera supportée que jusqu’à la sortie de la suivante. Cela changera dans quelques mois, car nous prévoyons de sortir une version LTS qui coïncidera avec les versions LTS de LXC et LXCFS.

Le support communautaire est disponible sur : https://discuss.linuxcontainers.org
Un support commercial est disponible sur : https://zabbly.com/incus
Les bugs peuvent être signalés sur : https://github.com/lxc/incus/issues