Выпуск сістэмы кіравання кантэйнерамі 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). Для абмежавання рэсурсаў прымяняюцца cgroups. Для зніжэння прывілеяў і абмежаванні доступу задзейнічаны такія магчымасці ядра, як профілі 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

Дадаць каментар