Создание узла контейнерной виртуализации LXC

HELP-ME-24.COM (Freelance Team), Черноусов Антон

В предыдущей статье Работа с LXC-контейнерами в Ubuntu Linux мы рассматривали основные команды управления контейнерами LXC на уже настроенном хосте.

Сегодня мы подробнейшим образом опишем как этот хост запустить на чистом сервере под управлением операционной системы Ubuntu Linux 14.04.5.

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

Будем исходить из того, что у нас установлена минимальная система Ubuntu Linux Server 14.04.5 и первым этапом выполним обновление ПО до последней версии выполнив последовательность команд:

# apt-get update
# apt-get upgrade

В Ubuntu 14-ой версии используется несколько устаревшая версия подсистемы управления контейнерами и хотя она полностью работоспособна и стабильна у вас могут возникнуть проблемы при переносе существующих контейнеров с Ubuntu 16-ой версии и я рекомендую вам обновить пакеты lxc  и cgmanager до последней версии.

Это можно сделать подключив сторонний репозиторий и принудительно обновив требуемые пакеты. Сделать это можно следующим образом:

# apt-get install software-properties-common
# add-apt-repository ppa:ubuntu-lxc/daily
# apt-get update
# apt-get install lxc cgmanager lxcfs

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

# apt-get install aptitude mc
# aptitude install unattended-upgrades
# dpkg-reconfigure unattended-upgrade

Если при выполнении операций установки ПО вы получаете ошибки вида:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "en_US:",

То,  я бы рекомендовал вам установить поддержку дополнительных локальных кодовых таблиц:

# locale-gen ru_RU.UTF-8
# locale-gen en_US.UTF-8

По умолчанию для создаваемых контейнеров задана подсеть lxcbr0. По сути это сетевой мост в который автоматически добавляются все запушенные контейнеры (имя интерфейса к которому будет подключен сетевой мост на самом деле задано в конфигурационном файле контейнера, и интерфейс по умолчанию задается в шаблоне). Так же в система автоматически запущен демон dnsmasq для управления службой dhcp назначающей ip-адреса контейнерам.

Мы легко можем отключить службу dnsmasq и изменить имя сети на что то более читаемое. Отключить DnsMasq можно изменив в конфигурационном файле /etc/default/lxc-net параметр:

USE_LXC_BRIDGE="false"

После перезагрузки подсистема конфигурации сети для контейнеров перейдет в ручной режим работы и вам придется самостоятельно конфигурировать сетевой мост и правила Firewall. В этом случае самым простым вариантом является создание фиктивного сетевого моста, для чего в файл /etc/network/interfaces добавьте следующие записи:

auto lxc-bridge
iface lxc-bridge inet static
        address 10.200.255.254
        netmask 255.255.0.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

Обратите внимание на параметр bridge_ports none, этот параметр создает сетевой интерфейс без входящих в него интерфейсов.

Следующим этапом нам потребуется изменить шаблон контейнера по умолчанию для использования имени созданного предыдущим этапом сетевого моста lxc-bridge. Для этого потребуется внести правки в файл /etc/lxc/default.conf:

lxc.network.link = lxc-bridge

Теперь можно создать контейнер и проверить его работоспособность. Вам конечно так же потребуется настроить NAT трафика из контейнеров в интернет, но вопрос настройки Firewall мы рассмотрим позже.

 

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий