Доступно с ограничениями в редакциях:  Open/CE, Core

Доступно без ограничений в редакциях:  SE+, Ultimate/EE, Certified Pro/CSE Pro (1.73)

Стадия жизненного цикла модуля: General Availability

У модуля есть требования для установки

Модуль virtualization позволяет декларативно создавать, запускать и управлять виртуальными машинами и их ресурсами.

Для управления ресурсами кластера используется утилита командной строки d8.

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

Виртуализация закрывает следующие сценарии:

  • Запуск виртуальных машин с x86-64-совместимой ОС.

    Виртуальные машины в кластере

  • Запуск виртуальных машин и контейнеризованных приложений в одном окружении.

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

  • Создание кластеров Deckhouse Platform (DP).

    Кластеры Deckhouse Platform на виртуальных машинах

Для промышленной эксплуатации разворачивайте модуль в кластере на физических серверах. Кластер на виртуальных машинах подходит только для тестирования, и на них должна быть включена вложенная виртуализация (nested virtualization).

Архитектура

Модуль состоит из следующих частей:

  • ядро (CORE) — основано на проекте KubeVirt и запускает виртуальные машины через QEMU/KVM и libvirtd;
  • Virtualization API (API) — обслуживает пользовательский API модуля и приводит образы, диски и машины к описанному в них состоянию;
  • Deckhouse Virtualization Container Registry (DVCR) — хранит и кеширует образы виртуальных машин;
  • вспомогательные компоненты — записывают события безопасности, пробрасывают USB-устройства и настраивают сетевые маршруты до машин.

Архитектура модуля

После включения модуля в пространстве имён d8-virtualization появляются следующие компоненты:

Название Часть модуля Назначение
virt-operator-* CORE Разворачивает и обновляет остальные компоненты ядра.
virt-api-* CORE Обрабатывает запросы к субресурсам виртуальных машин.
virt-controller-* CORE Ведёт жизненный цикл виртуальных машин.
virt-handler-* CORE Готовит узел к запуску виртуальных машин и передаёт команды в их поды. Работает на всех узлах.
virtualization-api-* API Обслуживает API модуля и его субресурсы, включая консоль, VNC и SPICE.
virtualization-controller-* API Создаёт и изменяет образы, диски и виртуальные машины по их ресурсам.
dvcr-* DVCR Хранит и кеширует образы виртуальных машин.
virtualization-audit-* Вспомогательный Записывает события безопасности по ресурсам модуля. Доступен в коммерческих редакциях DP.
virtualization-dra-* Вспомогательный Обнаруживает USB-устройства на узлах и пробрасывает их в машины. Доступен в коммерческих редакциях DP.
vm-route-forge-* Вспомогательный Настраивает маршруты до виртуальных машин. Работает на всех узлах, где запускаются ВМ.

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

Виртуальная машина внутри пода

API позволяет декларативно создавать, изменять и удалять следующие ресурсы:

  • образы виртуальных машин и загрузочные образы;
  • диски виртуальных машин;
  • виртуальные машины.