Что такое LXD? Управление контейнерами с помощью Linux Container Daemon

LXD, Linux Container Daemon, — это инструмент управления контейнерами операционной системы Linux. Он разработан компанией Canonical, которая также выпускает Ubuntu. Компания продолжает развивать LXD по сей день и определяет направление развития проекта.

LXD — это родственная технология LXC, Linux Containers. LXC — это технология виртуализации на основе контейнеров на уровне операционной системы. LXC объединяет изолированные пространства имен и «cgroups» ядра Linux для создания изолированных сред для выполнения кода. Исторически LXC также послужил основой для популярной технологии виртуализации Docker.

Одной из основных целей разработки LXD было сделать управление контейнерами LXC максимально удобным, как это характерно для виртуальных машин. Однако подход на основе контейнеров обеспечивает более высокую производительность, чем виртуальные машины.

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

Каковы особенности LXD?

  • Безопасность: Контейнеры работают в изолированных пространствах имен и могут получать доступ только к определенным заранее заданным ресурсам.
  • Масштабируемость: С помощью LXD вы можете управлять отдельными контейнерами на своем ноутбуке или тысячами контейнеров в распределенных средах.
  • Интуитивное удобство использования: LXD предоставляет понятный и простой API и клиент командной строки.
  • Основан на образах Linux: LXD работает со всеми образами Linux и, таким образом, пользуется преимуществами большого количества существующих дистрибутивов Linux.
  • Сложный контроль ресурсов: Устанавливаются лимиты на ресурсы процессора, основной памяти, использование сети, накопителей и ядра.
  • Доступ к системному оборудованию: если конфигурация позволяет, контейнеры могут получать доступ к USB-устройствам, GPU и носителям информации.
  • Управление сетью: Сетевые мосты и туннели могут быть созданы с помощью конфигурации.
  • Управление устройствами хранения данных: LXD поддерживает различные бэкенды хранения, пулы хранения и тома хранения.

Каковы плюсы и минусы LXD?

Основное преимущество LXD заключается в том, что он позволяет виртуализировать всю операционную систему Linux на основе контейнеров. Таким образом, он объединяет удобство виртуальных машин с производительностью контейнеров.

В отличие от большинства случаев использования Docker, здесь не делается акцент на виртуализации отдельного приложения (виртуализация приложений). Вместо этого образ системы Linux служит основой для каждого контейнера LXD (виртуализация системы). Это выгодно для администратора, так как открывает доступ к большому количеству свободно распространяемых дистрибутивов Linux и позволяет использовать множество существующих инструментов.

У LXD есть один недостаток по сравнению с другими технологиями виртуализации: Поскольку все контейнеры, запущенные на хосте, имеют доступ к одному и тому же ядру Linux, демон LXD доступен только в Linux. Более того, Linux — единственная операционная система, которую можно виртуализировать в качестве гостевой операционной системы. Однако командная строка по-прежнему работает на других операционных системах, отличных от Linux.

REST-API LXD может быть доступен по сети, что означает, что контейнеры можно копировать или перемещать между двумя компьютерами. Более того, LXD поддерживает создание компьютерных кластеров, которые объединяют множество отдельных вычислительных блоков в виртуальный суперкомпьютер.

Как работает LXD?

Ключевым компонентом LXD является привилегированный демон, который запускается на главной системе Linux. Демон LXD предоставляет REST API через локальный сокет Linux. С помощью настроек конфигурации к демону можно получить доступ и по сети. Под капотом LXD использует LXC в качестве бэкенда через библиотеку liblxc и ее привязки к go.

Клиенты взаимодействуют с демоном с помощью REST API. API определяет язык, который можно использовать для создания, управления и изменения контейнеров. Самый простой клиент — это официальный инструмент командной строки. Клиент командной строки предоставляет команды для многих распространенных операций и имеет внутренний доступ к REST API.

Далее мы собрали для вас несколько основных команд LXD. Не запутайтесь. Команды LXD называются lxc, а не lxd. Вы можете попробовать выполнить эти команды самостоятельно, не устанавливая клиент командной строки на свою систему. Просто воспользуйтесь веб-интерфейсом проекта linuxcontainers.org…

 

# show LXD commands and options
lxc
# show existing Ubuntu images
lxc image list ubuntu: | less
# start a Ubuntu 18.04 instance as a container with the name “Ubuntu”
lxc launch images:ubuntu/18.04 ubuntu
# list containers
lxc list
# show configuration for the container named “Ubuntu”
lxc config show ubuntu 
# show information for the container with the name “Ubuntu”
lxc info ubuntu

Где и когда используется LXD?

LXD может быть установлен на любой современной системе Linux. Он используется как на частных компьютерах, так и для платформ облачных вычислений и распределенных центров обработки данных. Основная цель — долгосрочная виртуализация всей операционной системы Linux. Таким образом, LXD контрастирует с Docker, где основное внимание уделяется кратковременным контейнерам, в которых хранится одно приложение. По словам разработчика LXD Стефана Грабера:

Цитата

«Эти контейнеры, как правило, работают долго и основаны на чистом образе дистрибутива. Традиционные инструменты управления конфигурацией и инструменты развертывания могут использоваться с контейнерами LXD точно так же, как вы бы использовали их для виртуальной машины, облачного экземпляра или физической машины».

В отличие от этого, Docker фокусируется на эфемерных, без статичных, минимальных контейнерах, которые обычно не обновляются или переконфигурируются, а просто полностью заменяются. Это делает Docker и подобные проекты гораздо ближе к механизму распространения программного обеспечения, чем к инструменту управления машинами». — Стефан Грабер, Источник: stgraber.org/2016/03/11/lxd-2-0-introduction-to-lxd-112/

Входящий в комплект клиент командной строки подходит для управления небольшим количеством контейнеров. Однако он не предназначен для работы с большим количеством контейнеров на многочисленных распределенных хостах. Для этого случая использования следует обратиться к соединениям на платформах OpenStack и OpenNebula.

Из каких компонентов состоит LXD?

Основными компонентами LXD являются вышеупомянутый демон, REST API, который он предоставляет, и командная строка. Далее мы рассмотрим основные сущности, которые используются в LXD.

Контейнеры

Контейнер — это основная абстракция, предоставляемая LXD. Контейнер LXD включает в себя следующие свойства:

  • файловая система Linux
  • Параметры конфигурации, такие как ограничения ресурсов, переменные среды, параметры безопасности и т.д.
  • Накопители и сетевые устройства
  • Профиль конфигурации, от которого контейнер наследует настройки
  • Общие свойства, такие как архитектура контейнера, имя и указание на то, является ли контейнер короткоживущим или долгоживущим
  • Статус выполнения, например, пропускная способность сети, использование памяти и т.д.

Снимки

Как и в других технологиях виртуализации, из контейнера можно создавать моментальные снимки. Снимок идентичен базовому контейнеру. Они неизменяемы, что означает, что их нельзя изменить. Их можно только переименовывать и удалять. Контейнер может быть идентично восстановлен на основе снимка.

Изображения

Несмотря на то, что LXD — это технология, основанная на контейнерах, в создании контейнеров участвует образ системы Linux. Каждый контейнер LXD по определению является производным от образа.

Образы обычно представляют собой немодифицированные дистрибутивы Linux, как в случае с виртуальными машинами или облачными экземплярами. Образ можно идентифицировать по его уникальному хэшу SHA256. Чтобы облегчить работу пользователей, образам можно присваивать псевдонимы.

Образы Linux могут быть получены из различных источников для использования с LXD. Следующие серверы образов предварительно определены в LXD:

  • ubuntu: Предоставляет стабильные образы Ubuntu
  • ubuntu-daily: Предоставляет ежедневные сборки образов Ubuntu
  • images: Предоставляет различные образы из других дистрибутивов Linux и управляется сообществом.

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

Профили

Профиль LXD объединяет различные параметры конфигурации контейнера. Профиль может быть применен к нескольким контейнерам; кроме того, несколько профилей могут быть последовательно применены к одному контейнеру. В ходе этого процесса определенные значения конфигурации могут быть перезаписаны. Таким образом, можно легко создавать семейства контейнеров. LXD доступен с двумя существующими профилями:

  • Профиль по умолчанию автоматически применяется к контейнерам, если не был установлен альтернативный профиль. Этот профиль содержит основные параметры конфигурации, такие как сетевое устройство eth0 контейнера.
  • Профиль docker настраивает контейнер LXD, предназначенный для размещения контейнера Docker. Профиль предлагает контейнеру LXD загрузить необходимые модули ядра и задать настройки устройств. Он также активирует вложенность контейнеров.

Remotes

LXD — это сетевой демон, то есть клиент командной строки может взаимодействовать с несколькими удаленными серверами LXD и серверами образов. Несколько серверов могут быть настроены как удаленные. Именно таким образом существующие контейнеры можно копировать и перемещать между серверами LXD; и именно через удаленные серверы обеспечивается доступ к серверу образов. Помимо вышеупомянутых серверов образов, клиент командной строки также знает локальный пульт. Это облегчает связь с локальным демоном LXD с помощью сокета UNIX.

Каковы альтернативы LXD?

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

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

Поскольку LXD основан на LXC, в качестве альтернативы LXD можно использовать «голую» установку LXC. Однако опыт, скорее всего, будет менее комфортным. Поскольку без LXD нет демона, виртуализацией нельзя управлять по сети. Кроме того, не будет REST API, который служил бы единым интерфейсом.

Среди известных инструментов виртуализации containerd наиболее сопоставим с LXD. Он также работает как демон, предоставляющий API. Это позволяет управлять контейнерами по сети, как и в случае с LXD. Технология интегрирована в Docker и часто используется.

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

Виртуализатор Тип Хост-система Гаст-система
LXD Контейнер Только Linux Только Linux
LXC Контейнер Только Linux Только Linux
containerd Контейнер Linux, Windows Разное / Приложение
Docker Контейнер Linux, macOS, Windows Разное / Приложение
Kubernetes Контейнер Linux, macOS, Windows Разное / Приложение
KVM Виртуальная машина Только Linux Linux, Windows
VirtualBox / VMware Виртуальная машина Linux, macOS, Windows Различные

Оцените статью
cdelat.ru
Добавить комментарий