Выпуск інструментара кіравання кантэйнерамі 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). Для абмежавання рэсурсаў прымяняюцца cgroups. Для зніжэння прывілеяў і абмежаванні доступу задзейнічаны такія магчымасці ядра, як профілі 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.
Цалкам перапісаны драйвер для працы з cgroup. Дададзена падтрымка уніфікаванай іерархіі cgroup (cgroup2). Дададзена функцыянальнасць кантролера freezer, пры дапамозе якога можна спыніць працу ў cgroup і часова вызваліць некаторыя рэсурсы (CPU, увод/выснова і патэнцыйна нават памяць) для выканання іншых задач;
Рэалізавана інфраструктура для перахопу сістэмных выклікаў;
Дададзена падтрымка падсістэмы ядра "pidfd", прызначанай для апрацоўкі сітуацыі з паўторным выкарыстаннем PID (pidfd злучаецца з пэўным працэсам і не змяняецца, у той час як PID можа быць прывязаны да іншага працэсу пасля завяршэння бягучага працэсу, асацыяванага з гэтым PID);
Палепшана стварэнне і выдаленне сеткавых прылад, а таксама іх перасоўванні паміж прасторамі імёнаў сеткавай падсістэмы;
Рэалізавана магчымасць перамяшчэння бесправадных сеткавых прылад (nl80211) у кантэйнеры.
Дададзена падтрымка запуску не толькі кантэйнераў, але і віртуальных машын;
Для сегментавання сервераў LXD прапанавана канцэпцыя праектаў, якія спрашчаюць кіраванне групамі кантэйнераў і віртуальных машын. Кожны праект можа ўключаць свой набор кантэйнераў, віртуальных машын, вобразаў, профіляў і раздзелаў захоўвання. У прывязцы да праектаў можна задаваць свае абмежаванні і мяняць налады;
Дададзена падтрымка перахопу сістэмных выклікаў для кантэйнераў;
Рэалізавана стварэнне рэзервовых копій акружэнняў і аднаўленне з іх;
Забяспечана аўтаматызаванае стварэнне снапшотаў акружэнняў і раздзелаў сховішчаў з магчымасцю задання часу існавання снапшота;
Дададзены API для маніторынгу за станам сеткі (lxc network info);
Дададзена падтрымка shiftfs, віртуальнай ФС для супастаўлення кропак мантавання з прасторамі імёнаў ідэнтыфікатараў карыстальнікаў (user namespace);
Прапанаваны новыя тыпы сеткавых адаптараў "ipvlan" і "routed";
Дададзены бэкенд для выкарыстання сховішчаў на базе CephFS;
Для кластараў рэалізавана падтрымка рэплікацыі вобразаў і шматархітэктурыны канфігурацый;
Дададзена магчымасць кіравання доступам на аснове роляў (RBAC);
Дададзена падтрымка CGroup2;
Дададзена магчымасць настройкі MAC-адрасу і вызначэння адраса крыніцы для NAT;
Дададзены API для кіравання прывязкамі ў DHCP (leases);