Випуск інструментарію керування контейнерами LXC та LXD 4.0

Компанія Canonical опублікувала реліз інструментарію для організації роботи ізольованих контейнерів LXC 4.0менеджера контейнерів LXD 4.0 та віртуальної ФС LXCFS 4.0 для симуляції в контейнерах /proc, /sys та віртуалізованого представлення cgroupfs для дистрибутивів без підтримки просторів імен для cgroup. Гілка 4.0 віднесена до випусків із тривалою підтримкою, оновлення для яких формуються протягом 5 років

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

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

Ключові поліпшення в LXC 4.0:

  • Повністю переписано драйвер для роботи з cgroup. Додано підтримку уніфікованої ієрархії cgroup (cgroup2). Додана функціональність контролера freezer, за допомогою якого можна зупинити роботу в cgroup та тимчасово вивільнити деякі ресурси (CPU, введення/виведення та потенційно навіть пам'ять) для виконання інших завдань;
  • Реалізовано інфраструктуру для перехоплення системних викликів;
  • Додано підтримку підсистеми ядра «pidfd», призначеної для обробки ситуації з повторним використанням PID (pidfd зв'язується з конкретним процесом і не змінюється, тоді як PID може бути прив'язаний до іншого процесу після завершення поточного процесу, асоційованого з цим PID);
  • Поліпшено створення та видалення мережевих пристроїв, а також їхнього переміщення між просторами імен мережевої підсистеми;
  • Реалізовано можливість переміщення бездротових мережевих пристроїв (nl80211) у контейнери.

Ключові поліпшення в LXD 4.0:

  • Додано підтримку запуску не тільки контейнерів, а й віртуальних машин;
  • Для сегментування серверів LXD запропоновано концепцію проектів, що спрощують управління групами контейнерів та віртуальних машин. Кожен проект може містити свій набір контейнерів, віртуальних машин, образів, профілів та розділів зберігання. У прив'язці до проектів можна ставити свої обмеження та змінювати налаштування;
  • Додано підтримку перехоплення системних викликів для контейнерів;
  • Реалізовано створення резервних копій оточень та відновлення з них;
  • Забезпечено автоматизоване створення снапшотів оточень та розділів сховищ із можливістю завдання часу існування снапшота;
  • Доданий API для моніторингу стану мережі (lxc network info);
  • Додана підтримка shiftfs, віртуальної ФС для зіставлення точок монтування з просторами імен ідентифікаторів користувачів (user namespace);
  • Запропоновано нові типи мережевих адаптерів "ipvlan" та "routed";
  • Доданий бекенд для використання сховищ на базі CephFS;
  • Для кластерів реалізована підтримка реплікації образів та багатоархітектурних конфігурацій;
  • Додано можливість керування доступом на основі ролей (RBAC);
  • Додана підтримка CGroup2;
  • Додано можливість налаштування MAC-адреси та визначення адреси джерела для NAT;
  • Доданий API для управління прив'язками DHCP (leases);
  • Додано підтримку Nftables.

Джерело: opennet.ru

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