Release van LXD 5.0 ​​containerbeheersysteem

Canonical heeft de release gepubliceerd van containermanager LXD 5.0 ​​en virtueel bestandssysteem LXCFS 5.0. De LXD-code is geschreven in Go en gedistribueerd onder de Apache 2.0-licentie. De 5.0-tak is geclassificeerd als een ondersteuningsrelease voor de lange termijn - updates zullen worden gegenereerd tot juni 2027.

Als runtime voor het starten van containers wordt de LXC-toolkit gebruikt, die de liblxc-bibliotheek, een reeks hulpprogramma's (lxc-create, lxc-start, lxc-stop, lxc-ls, enz.), sjablonen voor het bouwen van containers en een set bindingen voor verschillende programmeertalen. Isolatie wordt uitgevoerd met behulp van standaard Linux-kernelmechanismen. Om processen, de ipc-netwerkstack, uts, gebruikers-ID's en koppelpunten te isoleren, wordt het naamruimtemechanisme gebruikt. cgroups worden gebruikt om bronnen te beperken. Om de privileges te verlagen en de toegang te beperken, worden kernelfuncties zoals Apparmor- en SELinux-profielen, Seccomp-beleid, Chroots (pivot_root) en mogelijkheden gebruikt.

Naast LXC maakt LXD ook gebruik van componenten uit de CRIU- en QEMU-projecten. Als LXC een toolkit op laag niveau is voor manipulatie op het niveau van individuele containers, dan biedt LXD tools voor gecentraliseerd beheer van containers die zijn ingezet in een cluster van meerdere servers. LXD is geïmplementeerd als een achtergrondproces dat verzoeken via het netwerk accepteert via de REST API en verschillende opslagbackends ondersteunt (directoryboom, ZFS, Btrfs, LVM), snapshots met een statussegment, livemigratie van actieve containers van de ene machine naar de andere, en hulpmiddelen voor het opslaan van afbeeldingencontainers. LXCFS wordt gebruikt om de pseudo-FS /proc en /sys in containers te simuleren, en de gevirtualiseerde representatie cgroupfs om de containers het uiterlijk te geven van een regulier onafhankelijk systeem.

Belangrijkste verbeteringen:

  • Mogelijkheid tot hot-plugging en unplugging van schijven en USB-apparaten. In een virtuele machine wordt een nieuwe schijf gedetecteerd door het verschijnen van een nieuw apparaat op de SCSI-bus, en een USB-apparaat wordt gedetecteerd door het genereren van een USB-hotplug-gebeurtenis.
  • Het is mogelijk om LXD te starten, zelfs als het onmogelijk is om een ​​netwerkverbinding tot stand te brengen, bijvoorbeeld vanwege het ontbreken van het benodigde netwerkapparaat. In plaats van een foutmelding weer te geven bij het opstarten, start LXD nu het maximaal aantal omgevingen dat mogelijk is onder de huidige omstandigheden, en de overige omgevingen worden gestart nadat de netwerkverbinding tot stand is gebracht.
  • Er is een nieuwe rol als clusterlid toegevoegd: ovn-chassis, bedoeld voor clusters die OVN (Open Virtual Network) gebruiken voor netwerkcommunicatie (door de rol van ovn-chassis toe te wijzen, kunt u servers selecteren om de functies van OVN-routers uit te voeren).
  • Er is een geoptimaliseerde modus voorgesteld voor het bijwerken van de inhoud van opslagpartities. In eerdere releases bestond de update uit het eerst kopiëren van een containerinstance of -partitie, bijvoorbeeld met behulp van de verzend/ontvangstfunctionaliteit in zfs of btrfs, waarna de gemaakte kopie werd gesynchroniseerd door het rsync-programma uit te voeren. Om de efficiëntie van het updaten van virtuele machines te verbeteren, maakt de nieuwe release gebruik van geavanceerde migratielogica, waarbij, als de bron- en doelservers dezelfde opslagpool gebruiken, automatisch snapshots en verzend-/ontvangstbewerkingen worden gebruikt in plaats van rsync.
  • De logica voor het identificeren van omgevingen in cloud-init is herwerkt: in plaats van omgevingsnamen wordt nu UUID gebruikt als instance-id.
  • Ondersteuning toegevoegd voor het koppelen van de systeemaanroep sched_setscheduler, waardoor containers zonder privileges de procesprioriteiten kunnen wijzigen.
  • De optie lvm.thinpool_metadata_size is geïmplementeerd om de grootte van metagegevens in thinpool te regelen.
  • Het bestandsformaat met netwerkinformatie voor lxc is opnieuw ontworpen. Ondersteuning toegevoegd voor gegevens over interfacebinding, netwerkbruggen, VLAN en OVN-netwerk.
  • De vereisten voor minimale componentversies zijn verhoogd: Linux kernel 5.4, Go 1.18, LXC 4.0.x en QEMU 6.0.
  • LXCFS 5 voegde ondersteuning toe voor de uniforme cgroup-hiërarchie (cgroup2), implementeerde /proc/slabinfo en /sys/devices/system/cpu, en gebruikte de meson-toolkit voor assemblage.

Bron: opennet.ru

Voeg een reactie