Wydanie systemu zarządzania kontenerami LXD 5.0

Canonical opublikował wydanie menedżera kontenerów LXD 5.0 ​​i wirtualnego systemu plików LXCFS 5.0. Kod LXD jest napisany w Go i rozpowszechniany na licencji Apache 2.0. Gałąź 5.0 klasyfikowana jest jako wydanie długoterminowego wsparcia - aktualizacje będą generowane do czerwca 2027 roku.

Jako środowisko uruchomieniowe do uruchamiania kontenerów służy zestaw narzędzi LXC, który zawiera bibliotekę liblxc, zestaw narzędzi (lxc-create, lxc-start, lxc-stop, lxc-ls itp.), szablony do budowania kontenerów oraz zestaw powiązań dla różnych języków programowania. Izolacja odbywa się przy użyciu standardowych mechanizmów jądra Linuksa. Do izolowania procesów, stosu sieciowego ipc, uts, identyfikatorów użytkowników i punktów montowania wykorzystywany jest mechanizm przestrzeni nazw. cgroups służą do ograniczania zasobów. Aby obniżyć uprawnienia i ograniczyć dostęp, wykorzystywane są funkcje jądra, takie jak profile Apparmor i SELinux, zasady Seccomp, Chroots (pivot_root) i możliwości.

Oprócz LXC, LXD wykorzystuje także komponenty z projektów CRIU i QEMU. Jeśli LXC jest zestawem narzędzi niskiego poziomu do manipulacji na poziomie pojedynczych kontenerów, to LXD udostępnia narzędzia do scentralizowanego zarządzania kontenerami rozmieszczonymi w klastrze kilku serwerów. LXD jest zaimplementowany jako proces w tle, który akceptuje żądania przez sieć za pośrednictwem REST API i obsługuje różne backendy pamięci masowej (drzewo katalogów, ZFS, Btrfs, LVM), migawki z wycinkiem stanu, migrację na żywo uruchomionych kontenerów z jednej maszyny na drugą, i narzędzia do przechowywania pojemników na obrazy. LXCFS służy do symulowania pseudo-FS /proc i /sys w kontenerach oraz zwirtualizowanej reprezentacji cgroupfs, aby nadać kontenerom wygląd zwykłego, niezależnego systemu.

Kluczowe ulepszenia:

  • Możliwość podłączania i odłączania dysków i urządzeń USB podczas pracy. W maszynie wirtualnej nowy dysk jest wykrywany przez pojawienie się nowego urządzenia na magistrali SCSI, a urządzenie USB przez wygenerowanie zdarzenia USB hotplug.
  • Uruchomienie LXD jest możliwe nawet wtedy, gdy nawiązanie połączenia sieciowego nie jest możliwe, na przykład z powodu braku niezbędnego urządzenia sieciowego. Zamiast wyświetlać błąd przy uruchomieniu, LXD uruchamia teraz maksymalną liczbę środowisk możliwych w bieżących warunkach, a pozostałe środowiska są uruchamiane po nawiązaniu połączenia sieciowego.
  • Dodano nową rolę członka klastra - ovn-chassis, przeznaczoną dla klastrów wykorzystujących OVN (Open Virtual Network) do komunikacji sieciowej (przypisując rolę ovn-chassis, można wybrać serwery, które będą pełnić funkcje routerów OVN).
  • Zaproponowano zoptymalizowany tryb aktualizacji zawartości partycji pamięci. W poprzednich wersjach aktualizacja polegała na najpierw skopiowaniu instancji kontenera lub partycji, na przykład przy użyciu funkcjonalności wysyłania/odbioru w zfs lub btrfs, po czym utworzona kopia była synchronizowana poprzez uruchomienie programu rsync. Aby poprawić efektywność aktualizacji maszyn wirtualnych, w nowej wersji zastosowano zaawansowaną logikę migracji, w której, jeśli serwer źródłowy i docelowy korzystają z tej samej puli pamięci, zamiast rsync automatycznie używane są migawki i operacje wysyłania/odbioru.
  • Przerobiono logikę identyfikowania środowisk w Cloud-init: zamiast nazw środowisk, jako identyfikator instancji używany jest teraz UUID.
  • Dodano obsługę przechwytywania wywołania systemowego sched_setscheduler, umożliwiając nieuprzywilejowanym kontenerom zmianę priorytetów procesów.
  • Zaimplementowano opcję lvm.thinpool_metadata_size w celu kontrolowania rozmiaru metadanych w Thinpool.
  • Przeprojektowano format pliku z informacjami sieciowymi dla lxc. Dodano obsługę danych dotyczących powiązań interfejsów, mostów sieciowych, sieci VLAN i OVN.
  • Zwiększono wymagania dotyczące minimalnych wersji komponentów: jądro Linux 5.4, Go 1.18, LXC 4.0.x i QEMU 6.0.
  • LXCFS 5 dodał obsługę ujednoliconej hierarchii cgroup (cgroup2), zaimplementował /proc/slabinfo i /sys/devices/system/cpu oraz użył zestawu narzędzi meson do montażu.

Źródło: opennet.ru

Dodaj komentarz