Издаване на инструменти за управление на контейнери LXC 6.0, Incus 6.0 и LXD 5.21.1

Общността на Linux Containers публикува нова версия на инструмента за работа с изолирани контейнери LXC 6.0, предоставящ runtime, който е подходящ както за стартиране на контейнери с пълна системна среда, близка до виртуалните машини, така и за изпълнение на непривилегировани контейнери на отделни приложения (OCI). LXC принадлежи на инструментите с ниско ниво, работещи на ниво отделни контейнери. За централизирано управление на контейнерите, разположени в клъстър от няколко сървъра, на базата на LXC се развиват системите Incus и LXD. Клонът LXC 6.0 е класифициран като версия с дългосрочна поддръжка, обновленията за която ще се генерират в продължение на 5 години (до 2029 година). Кодът на LXC е написан на езика C и се разпространява под лиценз GPLv2.

В състава на LXC влиза библиотеката liblxc, набор от утилити (lxc-create, lxc-start, lxc-stop, lxc-ls и др.), шаблони за изграждане на контейнери и набор от биндинги за различни програмни езици. Изолацията се осъществява чрез вградените механизми на ядрото на Linux. За изолация на процеси, мрежов стек ipc, uts, идентификатори на потребители и точки на монтиране се използва механизма на пространства от имена (namespaces). За ограничаване на ресурсите се използват cgroups. За понижаване на привилегиите и ограничаване на достъпа се задействат възможности на ядрото, като профили Apparmor и SELinux, политики Seccomp, Chroots (pivot_root) и capabilities.

Основни промени:

  • Предоставена е възможност за изграждане на универсален изпълним файл lxc, комбиниращ в една утилита всички команди, които преди това се разпространяваха като отделни утилити 'lxc-*'. За изграждането на комбинирания изпълним файл е предложена опцията 'tools-multicall=true', при условие че всички стари отделни утилити се създават като символични връзки към утилитата lxc. Изграждането под формата на един изпълним файл значително намалява потреблението на дисково пространство от инструмента, което е актуално за вградени системи.
  • В библиотеката liblxc е добавена функцията set_timeout, която позволява задаване на таймаут за всякакви операции за взаимодействие с LXC monitor.
  • В интерфейса на мрежовите мостове lxcbr0 по подразбиране е активирана поддръжка на IPv6 с задаване на адреси от подсетката IPv6 ULA (Unique Local Address).
  • В утилитата lxc-usernsexec са добавени опции '-u' и '-g' за промяна на идентификаторите на потребителя и групата (UID и GID).
  • В утилитата lxc-checkconfig е осигурено показването на версията само при наличие на команда lxc-start и е добавена информация за максимално допустимия брой на всеки тип пространства от имена.
  • Добавена е поддръжка на образи на контейнери във формат OCI, в които за компресиране на информацията е използвана файловата система Squashfs.
  • За взаимодействие с systemd чрез D-Bus е използвана отделна библиотека libdbus-1 вместо libsystemd.
  • Поддръжката на системата за инициализация Upstart е прекратена.

С едновременно публикувана версия на проекта Incus, в рамките на който общността на Linux Containers развива форк на системата за управление на контейнери LXD, създаден от старата група разработчици, която някога е създала LXD. Кодът на Incus е написан на Go и се разпространява под лицензия Apache 2.0. Incus 6.0 се позиционира като стабилна версия, за която ще бъде осигурен дълъг цикъл на обновления (LTS). Сред промените в Incus 6.0 се открояват възможността за създаване на мрежови интерфейси чрез API bridge.external_interfaces, подобрена поддръжка на удостоверяване чрез JWT (JSON Web Token), поддръжка на USB и показване на детайлна системна информация с командата „incus info —resources“, както и поддръжка на версия LXD 5.21 в утилита lxd-to-incus.

Incus и LXD предоставят средства за централно управление на контейнери и виртуални машини, разположени както на един хост, така и в кластер от няколко. сървъри. Проектът е реализиран под формата на фонов процес, приемащ заявки по мрежата чрез REST API и поддържащ различни бекенди за хранилища (дърво от директории, ZFS, Btrfs, LVM), снимки със състоянието, live миграция на работещи контейнери от една машина на друга и средства за съхранение на контейнерни образи. Като runtime за стартиране на контейнери се използва инструментариумът LXC. Изолацията се осъществява с помощта на стандартните механизми на ядрото на Linux (пространства на имена, cgroups, Apparmor, SELinux, Seccomp).

Общността на Linux Containers координираше разработката на LXD, преди компанията Canonical да реши да трансформира LXD в корпоративен проект. Целта на форка е да предостави управлявана независима алтернатива на проекта LXD, под контрола на компанията Canonical. Създаването на Incus също така осигури възможност за работа по отстраняването на някои концептуални грешки, допуснати при разработката на LXD, които преди това не можеха да бъдат поправени без нарушение на обратната съвместимост.

Компания Canonical публикува нова версия на системата за управление на контейнери LXD 5.21.1. Клонът LXD 5.21 е обозначен като LTS и ще бъде поддържан до юни 2029 година. Кодът, добавен в LXD от служителите на Canonical, се предоставя под лицензия AGPLv3, но кодът на външни участници, за който Canonical няма имуществени права, остава под Apache 2.0. От функционалните промени в LXD 5.21.1 може да се отбележи преминаването на snap пакета от LXD към клоновете LXC 6.0 и LXCFS 6.0. В API е добавено разширение storage_volumes_all и свързаният с него обработчик /1.0/storage_volumes за извеждане на списък с всички дялове за съхранение. Добавено е разширение instances_files_modify_permissions за промяна на правата за достъп до съществуващи файлове чрез API.

Издаден е виртуален файлов файлов LXCFS 6.0, който се използва за симулиране в контейнери на псевдо-файловете /proc и /sys, а също така и за виртуализирано представяне на cgroupfs за дистрибуции без поддръжка на пространства от имена cgroup. В новата версия е добавена опцията "--enable-cgroup", която позволява управлението на вградена функционалност за създаване на виртуално дърво cgroupfs за контейнери, използващи cgroupv1 (в момента повечето дистрибуции поддържат предоставените от ядрото пространства от имена за cgroup, така че включването по подразбиране на вградената алтернативна реализация е загубило смисъл и сега е опционално). Освен това, в LXCFS 6.0 е прекратена филтрацията на CPU при генериране на файла /sys/devices/system/cpu, в зависимост от състоянието online/offline.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster