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

LXD 2.0: Установка и конфигурирование LXD [2/12].


Вторая статья из цикла статей про LXD от Стефана Грабера (Stéphane Graber). Получим последнюю версию и сделаем первоначальное конфигурирование.

Где взять и как установить LXD?

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

Репозиторий Ubuntu

Новые релизы LXD заливаются в Ubuntu development репозиторий в течение нескольких минут после выхода релиза в upstream. Пакет из Ubuntu development становится основой для всех других пакетов, доступных Убунту пользователям. Если вы используете разрабатываемый релиз Ubuntu 16.04 (выход в апреле 2016), то можете просто скомандовать: sudo apt-get install lxd
Если вы используете Ubuntu 14.04, то можете поставить: sudo apt-get -t trusty-backports install lxd

Хранилище Ubuntu Core

Пользователям системы Ubuntu Core с технологией Snappy можно установить: sudo snappy install lxd.stgraber

Официальный Ubuntu PPA

Пользователи версий Убунту типа 15.10 могут воспользоваться следующим PPA:
sudo apt-add-repository ppa:ubuntu-lxc/stable
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install lxd

Архив Gentoo

Последнюю версию LXD в Генту поставьте sudo emerge --ask lxd

Из исходников

Компиляция LXD из исходников не очень сложна, если вы знакомы с проектами Go. Обратите внимание, что вам будут нужны последние заголовочные файлы LXC. Прежде чем запускать LXD, вам понадобится ядро Linux старше 3.13, LXC старше 1.1.5, LXCFS и версия shadow с поддержкой uid/gid allocations. Актуальные инструкции по компиляции LXD из исходников вы можете найти в файле README.

Backend хранилищ

LXD поддерживает несколько storage backend. Лучше вам заранее изучить их возможности ДО начала их использования, так как НЕ поддерживается перемещение существующих контейнеров или образов между backend.

ZFS

Разработчики рекомендуют использовать ZFS для поддержки всех возможностей LXD, чтобы получить самый быстрый и надёжный опыт взаимодействия с контейнерами, включая квоты на "диск" контейнера, быстрое создание/восстановление снимков, оптимизированную миграцию (отправка/приёмка) и мгновенное создание контейнеров из образов. ZFS считается более зрелой чем btrfs.

Для использования ZFS с LXD нужно установить её в систему:

  • Для Убунту 16.04 - sudo apt-get install zfsutils-linux
  • Для Убунту 15.10 - sudo apt-get install zfsutils-linux zfs-dkms
  • Для предыдущих релизов Убунту - sudo apt-add-repository ppa:zfs-native/stable
    sudo apt-get update
    sudo apt-get install ubuntu-zfs

Для конфигурирования LXD используйте sudo lxd init Вам зададут несколько вопросов про конфигурацию zfs и настроят.

btrfs

Если ZFS не для вас, то файловая система btrfs предлагает схожий уровень интеграции с тем исключением, что она не совсем корректно предоставляет информацию об использовании диска внутри контейнера. Btrfs отлично работает со вложенностью (nest), так что если вы планируете использовать LXD внутри LXD, то стоит приглядеться к btrfs. LXD не нуждается в дополнительной конфигурации для работы с btrfs. Сделайте /var/lib/lxd на разделе с btrfs и LXD автоматически будет использовать его для вас.

LVM

Если ZFS и btrfs не вариант для вас, то можете применять LVM. LXD использует LVM для выделения ресурсов, создавая LV для каждого образа или контейнера и используя LVM снимки при необходимости.

Для конфигурирования LXD для LVM создайте LVM VG и запустите lxc config set storage.lvm_vg_name "THE-NAME-OF-YOUR-VG"
По умолчанию LXD использует ext4 для всех LV. Вы можете указать при желании XFS так: lxc config set storage.lvm_fstype xfs

Каталог (dir)

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

Больше опций конфигурации демона LXD


Сетевая конфигурация

По умолчанию LXD не слушает сеть. Единственный способ говорить с ним - через локальный unix сокет /var/lib/lxd/unix.socket. Для начала прослушивания сети вам понадобятся:
lxc config set core.https_address [::]
lxc config set core.trust_password some-secret-string

Первая инструкция предписывает LXD привязаться (bind) на все сетевые интерфейсы данной машины. Вы можете указать конкретные IPv4 или IPv6 адреса и указать другой порт (по умолчанию используется 8443).

Вторая инструкция устанавливает пароль, который используется удалёнными клиентами при добавлении себя в хранилище доверенных сертификатов LXD (certificate trust store). Когда клиент добавляет LXD хост, то ему будет предложено ввести пароль и если он введён корректно, то LXD сохранит сертификат клиента и будет ему доверять впредь, не требуя впоследствии пароля (это можно изменить или отключить клиента).

Вы можете выбрать путь без установки пароля и вручную удостоверять (trust) каждого нового клиента. Возьмите ~/.config/lxc/client.crt и добавьте его в trust store - lxc config trust add client.crt

Конфигурация прокси

Вам может понадобиться, чтобы LXD мог забирать образы с удалённых серверов. Если в вашей среде нужно проходить через HTTP(S) прокси, то можете использовать опции конфигурации LXD вместо стандартных переменных PROXY.
lxc config set core.proxy_http http://squid01.internal:3128
lxc config set core.proxy_https http://squid01.internal:3128
lxc config set core.proxy_ignore_hosts image-server.local

В примере мы указываем использовать ваш внутренний прокси squid01.internal, исключая обращения к image-server.local (на прямую).

Управление образами

LXD динамически кэширует образы. Когда вы требуете создать контейнер из удалённого образа, то он скачивается в ваше хранилище образов (image store), помечается как кэшируемый и используется. После нескольких дней использования (по умолчанию 10 дней) образ автоматически удаляется. Каждые несколько часов (по умолчанию 6 часов) LXD ищет новые версии ваших образов и обновляет локальную копию.

Всё можно настроить так:
lxc config set images.remote_cache_expiry 5
lxc config set images.auto_update_interval 24
lxc config set images.auto_update_cached false

В примере переопределяем дефолтные настройки. Кэширование образов выставили в 5 дней, поиск новых образов каждые 24 часа и обновлять образы только при указании флага --auto-update, без автоматического обновления кэшированных образов.

Выводы

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

Дополнительная информация

Главный сайт LXD - linuxcontainers.org/lxd
Github - github.com/lxd
Почтовая рассылка - lists.linuxcontainers.org
IRC #lxcontainers irc.freenode.net

Оглавление цикла статей про LXD 2.0.
Предыдущая статья LXD 2.0: Введение в LXD [1/12].
Следующая статья LXD 2.0: Ваш первый LXD контейнер [3/12].

Дата последней правки: 2023-12-27 13:20:10

RSS vasilisc.com   


Разделы

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