Авторские статьи

Canonical представила LXD.


Дастин Кирклэнд (Dustin Kirkland), главный человек в Canonical по облачным решениям, решил ставить свои пять копеек про новую задумку LXD - Linux Container Daemon. Произносить LXD следует как lex-dee.

Дело в том, что неделей ранее в Париже на саммите OpenStack Марк Шаттлворт уже представил LXD публике. Затем Стефан Грабер (Stéphane Graber) в почтовой рассылке попытался раскрыть технические детали для специалистов. Серж Халлин (Serge Hallyn) расписал работу Cgroups и CGManager, которые используются в LXD. Кстати, Серж и Стефан являются разработчиками LXC, который является краеугольным камнем в LXD.

Разработчик Тихо Андерсен (Tycho Andersen), работающий над CRIU (Checkpoint/Restore In Userspace), показал видеоролик, на котором культовый Doom мигрировал на лету с одного контейнера в другой и обратно.

Тут ремарка в сторону, чтобы обратить ваше внимание на интересный факт, что хотя проект CRIU и был воспринят с оптимизмом, но Линус Торвальдс, создатель ядра Linux, отреагировал на проект скептически:
"Замечание: это проект, разрабатываемый разными сумасшедшими россиянами, по созданию контрольных точек и рестарта с них в основном из пользовательского приложения, с различным странным вспомогательным кодом, добавленным в ядро там, где показана такая необходимость.
... Однако, я не так, как разработчики, уверен в том, что всё это когда-нибудь заработает! Поэтому я прошу их обернуть макросом CONFIG_CHECKPOINT_RESTORE каждый кусок нового кода в ядре.
Так что если со временем всё это закончится слезами и проект в целом развалится, это будет простой задачей пройтись по коду и выкинуть всё без следа."

По словам Дастина, главная цель LXD - расширить обслуживание операционных систем внутри контейнера подобно виртуальным машинам. Дастин пишет, что в Canonical любят KVM, как гипервизор виртуализации, позволяющий создавать полную абстракцию компьютера. Любят Docker за его развитие изоляции на уровне отдельных приложений, позволяя легко паковать и распространять целые программные комплексы.

Но клиентам Canonical и самой Canonical требуется решение, когда операционная система Linux может загружаться и работать в изолированном контейнере. LXC (Linux Containers) может иметь огромное значение в OpenStack, где запущено множество сервисов на каждом хосте. Почти каждый узел - это контроллер вычислительных ресурсов Nova, а так же узел хранения Ceph. Добавьте сюда необходимость в работе OpenStack'овской мелочи в виде MySQL, RabbitMQ, MongoDB. Вместо того, чтобы работать этому множеству сервисов на ограниченном количестве физических машин, можно каждый сервис запускать в своём контейнере, со своим IP адресом, пространством имён, cgroup и так далее. Это даёт непревзойдённую гибкость при оркестровке этих сервисов. Вы сможете перемещать (миграция и даже живая миграция) сервисы с одного хоста на другой. Такая эвакуация сервисов позволяет отключать хосты на плановый апгрейд или ремонт.

Многим компаниям нужна высокая плотность, которую традиционно дают контейнеры, по загрузке их аппартного оборудования. LXD даст и высокую плотность и некоторые возможности полной виртуализации. LXD - это не гипервизор, как у виртуализации, но демон, который призрачно решает поставленные перед ним задачи: управление контейнерами на хостах и организация перемещений контейнеров между хостами, изолирование контейнеров.

Ничего бы этого не было, если ключевые компоненты не достигли своих высот. Это пространства имён (namespaces), cgroups, ограничения через AppArmor и SECCOMP, заморозка и восстановление процессов с помощью CRIU.

Если вы хотите понять суть LXD, то можете попробовать использовать вначале LXC в Ubuntu, создавая и манипулируя контейнерами напрямую. Это даст вам понимание низкоуровневых вещей.

Если хотите подняться "этажом выше", то попробуйте Ubuntu OpenStack Juno, в котором есть nova-compute-flex. Flex - это старое кодовое имя, до релиза под именем LXD. Ubuntu OpenStack Juno позволит создать контейнеры LXC с той же лёгкостью что и KVM машины. Не забывайте, что все контейнерные технологии, а LXD не исключение, используют ядро linux и в контейнере может быть только linux. Например, Ubuntu может запустить контейнеры с системным окружением RHEL, CentOS, SUSE, Debian и так далее.

LXD - демон, написанный на языке Go, предоставляет REST API через локальный unix socket и сеть, используя https. Сейчас есть два клиента у демона: это плагин для OpenStack и консольный инструмент. С развитием LXD никто не хоронит инструментарий LXC и шаблоны операционных систем (template).

Из коробки с LXD вы получите:

Несколько слов о вещах, которые не касаются технической стороны вопроса. За многие годы, люди упрекают Canonical в странных вещах: выбор хостинга из своих Bazaar и Launchpad.net, любимой лицензии GPLv3/AGPLv3 и соглашение Canonical Contributor License Agreement (CLA), которое единственное спорное решение из списка.

Чтобы всем было спокойнее:

  • Проект открыт и он движим сообществом на портале LinuxContainers.org
  • Код и документы хостятся на Github
  • Лицензирован LXD под Apache License.
  • Не требуется Canonical CLA.

Дополнительные материалы:
Цикл статей о LXC от его разработчика Стефана Грабера (Stéphane Graber).

Дата последней правки: 2023-12-28 13:36:24

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта