Home » Неизменяемая ОС Flatcar Linux в среде Proxmox для контейнерных нагрузок

Неизменяемая ОС Flatcar Linux в среде Proxmox для контейнерных нагрузок

от virtualizationhowto
0 Комментарии 220 просмотров 7 мин на чтение

Существует множество отличных операционных систем Linux, которые используются в инфраструктурах для запуска контейнеров. Ранее рассматривался опыт использования Lightwhale, который оказался весьма положительным. Однако в профессиональных кругах часто упоминается дистрибутив под названием Flatcar Linux. Это преемник CoreOS, который известен как одна из первых неизменяемых (immutable) операционных систем, ориентированных на контейнеры. По этой причине возникла необходимость проверить процесс его запуска и настройки в среде Proxmox. Изначально ожидалось, что это будет стандартная виртуальная машина Linux с небольшими отличиями, однако данное предположение быстро не подтвердилось.

Что такое Flatcar Linux на самом деле

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

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

  • Неизменяемая корневая файловая система
  • Автоматические обновления с возможностью отката
  • Минимальная поверхность атаки
  • Разработка преимущественно для контейнерных рабочих нагрузок
  • Управление конфигурацией с помощью Ignition или Butane

Привычный опыт работы с полноценными ОС Linux, такими как Ubuntu, Debian или Rocky Linux, потребуется пересмотреть, поскольку данный тип контейнерной операционной системы требует иного подхода к таким задачам, как авторизация или установка стандартных инструментов.

Принцип работы носит строго декларативный характер. Конфигурация системы определяется до загрузки, после чего она настраивается самостоятельно. Именно этот аспект представлял наибольший интерес для тестирования в Proxmox.

Почему возникла необходимость тестирования в Proxmox

Многие среды полностью мигрируют на Proxmox, отказываясь от иных платформ, таких как VMware. Учитывая, что Flatcar является преемником CoreOS, а в качестве основной платформы виртуализации используется Proxmox, развертывание Flatcar в этой среде выглядит логичным шагом.

Однако в доступной документации и публикациях о запуске Flatcar на Proxmox наблюдается недостаток информации. Для устранения этих пробелов потребовалось ответить на следующие вопросы:

  • Можно ли использовать Flatcar в качестве универсального хоста для контейнеров в Proxmox?
  • Насколько сложен процесс установки и настройки по сравнению со стандартной виртуальной машиной Linux?
  • Какое место дистрибутив занимает по сравнению с другими легковесными решениями?

Эти вопросы послужили основанием для загрузки образа Flatcar и начала тестирования.

Установка Flatcar в Proxmox

На основе анализа процесса установки был составлен следующий алгоритм развертывания новой виртуальной машины Flatcar Linux в Proxmox:

  1. Загрузка raw-образа Flatcar
  2. Создание новой виртуальной машины в Proxmox
  3. Импорт raw-диска в виртуальную машину
  4. Подключение диска с использованием контроллера VirtIO SCSI
  5. Настройка порядка загрузки
  6. Использование Butane и Ignition для конфигурации при первой загрузке

Загрузка raw-образа Flatcar

Для загрузки raw-образа Flatcar на сервере Proxmox VE используется следующая команда:

Загрузка raw-образа Flatcar
Загрузка raw-образа Flatcar

Создание новой виртуальной машины в Proxmox

Далее необходимо создать новую виртуальную машину в Proxmox. Поскольку образ был загружен через интерфейс командной строки, шаги по созданию ВМ также выполняются в ней. В приведенной ниже команде требуется заменить ID 142 на целевой ID виртуальной машины, а также указать соответствующий сетевой мост:

Создание виртуальной машины Flatcar через командную строку в Proxmox
Создание виртуальной машины Flatcar через командную строку в Proxmox

Импорт raw-диска в виртуальную машину

Затем осуществляется импорт raw-диска Flatcar в целевое хранилище. Имя хранилища «rbd-vm» необходимо заменить на актуальное для конкретной среды.

Импорт raw-диска Flatcar в созданную виртуальную машину Proxmox
Импорт raw-диска Flatcar в созданную виртуальную машину Proxmox

Подключение диска с использованием VirtIO SCSI и настройка порядка загрузки

После импорта диск подключается как SCSI-накопитель с применением контроллера VirtIO SCSI:

Затем устанавливается порядок загрузки с данного диска:

Изначально малый размер диска

Одной из очевидных особенностей является минимальный размер диска Flatcar по умолчанию. Исходный raw-образ занимает несколько гигабайт, что достаточно для загрузки операционной системы, но не соответствует требованиям для полноценного использования. Логичным шагом является расширение дискового пространства, выделенного по умолчанию в Proxmox.

Изменение размера диска виртуальной машины Flatcar для добавления хранилища
Изменение размера диска виртуальной машины Flatcar для добавления хранилища

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

Создание файла Ignition с помощью Butane

Настройка Flatcar, по аналогии с CoreOS, осуществляется с использованием файла «Ignition». Для генерации таких файлов и работы с ними требуются инструменты Butane и Ignition.

Ключевую роль в запуске виртуальной машины играет Butane. Конфигурация описывается в Butane с использованием стандартного синтаксиса YAML. После этого утилита командной строки Butane конвертирует её в файл Ignition формата JSON.

Конфигурационный файл создается с расширением .bu. В него необходимо внести авторизованные ключи SSH и имена пользователей. Имя хоста можно задать через файл /etc/hostname, как продемонстрировано в нижней части примера. Данный базовый файл конфигурации обеспечивает первичный запуск системы. Дополнительно, в разделе сети (network), предусмотрена возможность указания статического IP-адреса.

После подготовки файла в формате YAML утилита командной строки butane используется для конвертации в формат ignition:

Создание файла ignition для Flatcar в Proxmox с помощью Butane
Создание файла ignition для Flatcar в Proxmox с помощью Butane

Размещение конфигурационного файла

Платформа Proxmox должна иметь доступ к сгенерированному файлу ignition. В качестве оптимального решения файл можно разместить в пуле CephFS, обеспечив к нему доступ со всех хостов. В корне пула CephFS создается каталог с именем ignitionfiles:

Создана директория для файлов ignition и скопирован файл
Создана директория для файлов ignition и скопирован файл

Настройка аргумента файла ignition для виртуальной машины Flatcar

Заключительным этапом является выполнение команды для передачи файла ignition в параметры виртуальной машины с использованием флага -fw_cfg:

Настройка файла ignition для виртуальной машины Flatcar для внедрения при первой загрузке
Настройка файла ignition для виртуальной машины Flatcar для внедрения при первой загрузке

Создание снимка перед первой загрузкой

Рекомендуется создать снимок (snapshot) виртуальной машины Flatcar до её первого включения. Файл ignition обрабатывается исключительно при первой загрузке ВМ. Наличие снимка позволяет при возникновении ошибок конфигурации или необходимости внесения правок откатить систему в выключенное состояние, обновить файл ignition и произвести повторный запуск.

Создание снимка выключенной виртуальной машины Flatcar перед первой загрузкой
Создание снимка выключенной виртуальной машины Flatcar перед первой загрузкой

Проверка выполнения файла ignition

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

Загрузка Flatcar и выполнение файла ignition
Загрузка Flatcar и выполнение файла ignition

На данном этапе также становится доступным подключение к виртуальной машине по протоколу SSH.

Учетные данные SSH работают ожидаемым образом с пользовательским закрытым ключом
Учетные данные SSH работают ожидаемым образом с пользовательским закрытым ключом

Проверка работоспособности Docker является следующим важным шагом. В текущем стабильном выпуске предустановлен Docker версии 28.x. Команды управления Docker выполняются корректно; сервис установлен и готов к эксплуатации.

Просмотр команд Docker внутри Flatcar Linux
Просмотр команд Docker внутри Flatcar Linux

Проверка и установка обновлений

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

  • Проверка наличия обновлений
  • Применение обновлений к неактивному разделу
  • Перезагрузка системы для активации нового раздела (по принципу переключения разделов)

Проверка обновлений в Flatcar Linux
Проверка обновлений в Flatcar Linux

Сценарии использования Flatcar в среде Proxmox

Flatcar представляет собой стабильный дистрибутив Linux, готовый к эксплуатации (production-ready) и отвечающий требованиям современных архитектур. Декларативный подход к развертыванию хостов Docker с использованием Flatcar обеспечивает высокую надежность и предсказуемость среды.

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

Сценарий использования Подходит для Flatcar Обоснование
Рабочие узлы (worker) или узлы управления (control plane) Kubernetes Да Разработан специально для cloud-native решений и рабочих нагрузок Kubernetes
Выделенные хосты для контейнеров Да Минималистичная, безопасная и оптимизированная для контейнеров ОС
Неизменяемые шаблоны виртуальных машин Да Интеграция с Butane и Ignition для создания воспроизводимых развертываний
Воспроизводимые тестовые среды Да Поддержка декларативной конфигурации
Изучение облачных (cloud-native) развертываний Да Соответствует методологии «инфраструктура как код» (IaC)
Серверы Linux общего назначения Нет Отсутствует традиционная система управления пакетами
Виртуальные машины, требующие ручной настройки Нет Неизменяемая архитектура (immutable design)
Задачи, требующие частой установки пакетов Нет Не поддерживаются стандартные пакетные менеджеры, такие как apt или yum
Единичные служебные серверы Нет Уступает в гибкости дистрибутивам уровня Ubuntu или Debian в данной роли

Заключение

Доступная информация по развертыванию Flatcar Linux в среде Proxmox содержит пробелы. Рассмотренный процесс установки и адаптации Flatcar в Proxmox демонстрирует, что данный дистрибутив является надежной платформой, обеспечивающей неизменяемую и не требующую сложного обслуживания среду для контейнеров Docker. Развертывание сводится к загрузке raw-образа, его импорту в новую виртуальную машину Proxmox, подключению через VirtIO SCSI, автоматическому масштабированию диска и применению конфигурации посредством Butane и Ignition. Flatcar Linux является перспективным решением как для тестовых сред, так и для промышленной эксплуатации, заслуживающим внимания при выборе операционной системы.

Источник на английском языке

Читайте про Свой умный дом локально:
🌐 Сайт
📱 Телеграм
📰 Дзен

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

Вам может понравиться

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