Deckhouse Platform (DP) запускает виртуальные машины (ВМ) в том же кластере, что и контейнерные нагрузки, и управляет ими декларативно, через ресурсы Kubernetes. Машины работают на тех же узлах, в тех же сетях и хранилищах, что и остальные нагрузки, поэтому администратор настраивает их привычными средствами DP.
DP позволяет:
- подготовить узлы кластера к запуску виртуальных машин;
- хранить образы, общие для всего кластера, и выдавать проектам хранилища под диски;
- задать параметры машин, которые будут доступны владельцам проектов;
- пробросить в машины устройства узла.
Установка и настройка
Виртуализация предъявляет к узлам собственные требования: аппаратная поддержка виртуализации, одинаковая версия ядра, хранилище под диски и образы, отдельные подсети для машин. Они перечислены в разделе «Дополнительные требования для виртуализации», а порядок включения и размещение компонентов по узлам — в разделе «Установка виртуализации».
Параметры, которые задаются в ресурсе ModuleConfig, описаны в справочнике настроек модуля, а особенности обновления компонентов — в разделе «Обновление виртуализации».
В качестве гостевых DP поддерживает операционные системы на архитектурах x86 и x86-64. Для работы в режиме паравиртуализации в гостевой системе устанавливают драйверы VirtIO. Машины с Linux удобнее готовить из образов с поддержкой cloud-init, а машины с Windows — с файлом ответов autounattend.
Хранение образов и дисков
Образы и диски машин занимают место в кластере, и их хранение настраивает администратор.
Загруженные образы DP держит в собственном хранилище DVCR. Его размер, класс хранения и расписание очистки от неактуальных данных описаны в разделе «Хранилище образов виртуальных машин». Классы хранения, из которых проекты создают диски и образы, перечислены в разделе «Хранилища для дисков и образов виртуальных машин».
Образы, общие для всего кластера, администратор готовит сам: из них владельцы проектов создают диски, не загружая одни и те же данные повторно. Как их создать и в каком виде хранить, описано в разделе «Кластерные образы виртуальных машин».
Классы виртуальных машин
Класс определяет, какой процессор увидит гостевая система, на каких узлах запустится машина и какие сочетания ядер и памяти ей доступны. Владелец проекта выбирает класс из подготовленных администратором, поэтому именно классами DP ограничивает параметры машин в кластере.
Устройство ресурса VirtualMachineClass и назначение класса по умолчанию описаны в разделе «Классы виртуальных машин». Дальше каждой группе настроек отведён свой раздел: «Виртуальный процессор виртуальных машин», «Размещение виртуальных машин по узлам» и «Политика сайзинга виртуальных машин». Отдельно вынесена «Переподписка на CPU для виртуальных машин» — доля физического ядра, которую машина получает гарантированно.
Проброс устройств
Машине можно отдать устройство узла: USB-устройство, GPU или PCI-устройство. У каждого типа свои требования к узлу и свой порядок подготовки, поэтому им отведены отдельные разделы.
Эксплуатация кластера с виртуальными машинами
Работающие машины затрагивают и другие области настройки DP:
- «Сеть виртуальных машин» — подсети, из которых машины получают адреса.
- «Обслуживание узлов с виртуальными машинами» — вывод узла на обслуживание без потери машин.
- «Отказоустойчивость и балансировка виртуальных машин» — перебалансировка и ColdStandby.
- «Аудит событий виртуализации» — журнал действий с ресурсами виртуализации.
Как виртуализация устроена внутри, описано в разделе «Подсистема Virtualization», полный список ресурсов и их параметров — в справочнике. Владельцу проекта адресован раздел «Виртуальные машины».