Випуск системи керування контейнерами LXD 5.0

Компанія Canonical опублікувала реліз менеджера контейнерів LXD 5.0 ​​та віртуальної ФС LXCFS 5.0. Код LXD написаний мовою Go та поширюється під ліцензією Apache 2.0. Гілку 5.0 віднесено до випусків із тривалою підтримкою — оновлення формуватимуться до червня 2027 року.

Як runtime для запуску як контейнерів використовується інструментарій LXC, до складу якого входить бібліотека liblxc, набір утиліт (lxc-create, lxc-start, lxc-stop, lxc-ls тощо), шаблони для побудови контейнерів та набір біндингу для різних мов програмування. Ізоляція здійснюється за допомогою штатних механізмів ядра Linux. Для ізоляції процесів, мережевого стека ipc, uts, ідентифікаторів користувачів та точок монтування використовується механізм просторів імен (namespaces). Для обмеження ресурсів застосовуються групи. Для зниження привілеїв та обмеження доступу задіяні такі можливості ядра, як профілі Apparmor та SELinux, політики Seccomp, Chroots (pivot_root) та capabilities.

Крім LXC у LXD також застосовуються компоненти від проектів CRIU та QEMU. Якщо LXC є низькорівневим інструментарієм для маніпуляції лише на рівні окремих контейнерів, то LXD надає кошти централізованого управління контейнерами, розгорнутими в кластері з кількох серверів. LXD реалізований у вигляді фонового процесу, що приймає запити по мережі через REST API та підтримує різні бекенди сховищ (дерево директорій, ZFS, Btrfs, LVM), снапшоти зі зрізом стану, live-міграцію працюючих контейнерів з однієї машини на іншу та засоби для зберігання образів контейнерів. LXCFS застосовується для симуляції в контейнерах псевдо-ФС /proc та /sys, а віртуалізованого уявлення cgroupfs для надання контейнерам виду звичайної незалежної системи.

Ключові покращення:

  • Можливість гарячого підключення та вимкнення дисків та USB-пристроїв. У віртуальній машині новий диск визначається через появу нового пристрою на шині SCSI, а USB-пристрій - створення події USB hotplug.
  • Дана можливість запуску LXD навіть в умовах неможливості підняття мережного з'єднання, наприклад, через відсутність необхідного мережного пристрою. Замість виводу помилки при запуску LXD тепер запускає максимально можливе в поточних умовах кількість оточень, а інші оточення запускаються після налагодження мережного з'єднання.
  • Додано нову роль членів кластера — ovn-chassis, призначену для кластерів, що використовують OVN (Open Virtual Network) для мережевої взаємодії (через присвоєння ролі ovn-chassis можна виділити сервери для виконання функцій маршрутизаторів OVN).
  • Запропоновано оптимізований режим оновлення вмісту розділів сховища. У попередніх випусках оновлення зводилося до того, що спочатку екземпляр контейнера або розділ копіювався, наприклад, через застосування функціональності send/receive у zfs або btrfs, після чого створена копія синхронізувалася через запуск програми rsync. Для підвищення ефективності оновлення віртуальних машин у новому випуску задіяна просунута логіка міграції, при якій у випадку, якщо вихідний та цільовий сервер використовують один пул зберігання, замість rsynс автоматично застосовуються снапшоти та операції send/receive.
  • Перероблено логіку ідентифікації оточення в cloud-init: замість імен оточення як instance-id тепер використовується UUID.
  • Додано підтримку перехоплення системного виклику sched_setscheduler, що дозволяє непривілейованим контейнерам змінювати пріоритети процесів.
  • Реалізовано опцію lvm.thinpool_metadata_size, що управляє розміром метаданих у thinpool.
  • Перероблено формат файлу з мережевою інформацією для lxc. Додана підтримка даних про зв'язування інтерфейсів, мережевих мостів, VLAN та OVN-мережі.
  • Підвищено вимоги до мінімальних версій компонентів: ядро ​​Linux 5.4, Go 1.18, LXC 4.0.x та QEMU 6.0.
  • У LXCFS 5 додано підтримку уніфікованої ієрархії cgroup (cgroup2), реалізовані /proc/slabinfo та /sys/devices/system/cpu, для складання задіяний інструментарій meson.

Джерело: opennet.ru

Додати коментар або відгук