Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
Компоненты модуля необходимо развёртывать на физических серверах (bare-metal).
Установка на виртуальные машины допустима только в демонстрационных целях, но при этом должна быть включена вложенная виртуализация (nested virtualization). Если модуль развёрнут на виртуальных машинах, техническая поддержка не предоставляется.
Пределы масштабирования
Модуль рассчитан на кластер такого размера:
- до
1000узлов; - до
50000виртуальных машин.
Модуль не накладывает дополнительных ограничений и совместим с любым оборудованием, поддерживаемым операционными системами, на которые он может быть установлен.
Требования к оборудованию и ПО
Требования к аппаратному обеспечению для модуля виртуализации совпадают с требованиями, предъявляемыми к Deckhouse Platform (DP), с дополнительным требованием поддержки виртуализации CPU на хостах, где будут запускаться виртуальные машины.
Дополнительные требования для поддержки виртуализации
На всех узлах кластера, где планируется запуск виртуальных машин, необходимо обеспечить поддержку аппаратной виртуализации:
- процессор с поддержкой инструкций Intel-VT (VMX) или AMD-V (SVM);
- включённая поддержка аппаратной виртуализации в настройках BIOS/UEFI.
Живая миграция работает стабильно только тогда, когда на всех узлах кластера стоит одна версия ядра Linux.
Это связано с тем, что различия в версиях ядра могут привести к несовместимости интерфейсов, системных вызовов и особенностей работы с ресурсами, что может нарушить процесс миграции виртуальных машин.
Используйте ядра с актуальными обновлениями безопасности от разработчика вашего дистрибутива. На работу виртуализации такие обновления не влияют, но снижают риски для защищённости кластера.
Для узлов на базе Astra Linux для корректной работы виртуализации требуется версия платформы Astra Linux не ниже 1.8.3 (в более ранних версиях есть ошибка, мешающая работе виртуализации).
Поддерживаемые гостевые ОС
DP поддерживает в качестве гостевых операционные системы, работающие на архитектурах x86 и x86-64. Для корректной работы в режиме паравиртуализации необходимо установить драйверы VirtIO, обеспечивающие эффективное взаимодействие между виртуальной машиной и гипервизором.
Успешный запуск операционной системы определяется следующими критериями:
- корректная установка и загрузка ОС;
- бесперебойная работа основных компонентов, таких как сеть и хранилище;
- отсутствие сбоев или ошибок в процессе работы.
Для операционных систем семейства Linux рекомендуется использовать образы гостевых ОС с поддержкой cloud-init, что позволяет выполнять инициализацию виртуальных машин после их создания.
Для операционных систем семейства Windows DP поддерживает инициализацию с помощью autounattend установки.
Пределы конфигурации виртуальной машины
Для одной виртуальной машины действуют следующие пределы:
- до
248процессорных ядер; - до
1024 ГБоперативной памяти; - до
16подключённых блочных устройств.
Поддерживаемые хранилища
Диски виртуальных машин создаются на основе ресурсов PersistentVolume. Для управления этими ресурсами и выделения дискового пространства в кластере должно быть развёрнуто одно или несколько поддерживаемых хранилищ:
| Хранилище | Расположение дисков |
|---|---|
| sds-local-volume | Локальное |
| sds-replicated-volume | Реплики на узлах кластера |
| Ceph-кластер | Внешнее хранилище |
| NFS (Network File System) | Внешнее хранилище |
| TATLIN.UNIFIED (Yadro) | Внешнее хранилище |
| Huawei Dorado | Внешнее хранилище |
| HPE 3par | Внешнее хранилище |
Порядок установки
Виртуализация разворачивается в несколько шагов:
-
Разверните кластер Deckhouse Platform по инструкции.
-
Для хранения данных виртуальных машин (виртуальные диски и образы) включите одно или несколько поддерживаемых хранилищ.
-
Установите
StorageClassпо умолчанию.# Укажите имя своего объекта StorageClass. DEFAULT_STORAGE_CLASS=replicated-storage-class sudo -i d8 k patch mc global --type='json' -p='[{"op": "replace", "path": "/spec/settings/defaultClusterStorageClass", "value": "'"$DEFAULT_STORAGE_CLASS"'"}]' -
Включите модуль
console, который позволит управлять компонентами виртуализации через веб-интерфейс Deckhouse. -
Включите модуль
virtualization:Включение модуля
virtualizationперезапускает kubelet, containerd и агенты сетевого модуля на всех узлах, где предполагается запуск виртуальных машин. Это необходимо для настройки связности containerd и DVCR.Для включения модуля
virtualizationсоздайте ресурс ModuleConfig с настройками модуля.Перед включением модуля внимательно ознакомьтесь с его настройками в Руководстве администратора.
Пример конфигурации модуля:
d8 k apply -f - <<EOF apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: virtualization spec: enabled: true # Включить виртуализацию. settings: dvcr: storage: persistentVolumeClaim: size: 50G type: PersistentVolumeClaim virtualMachineCIDRs: - 10.66.10.0/24 version: 1 EOFОтследить готовность модуля можно с использованием следующей команды:
d8 k get modules virtualizationПример вывода:
NAME WEIGHT SOURCE PHASE ENABLED READY virtualization 900 deckhouse Ready True TrueФаза модуля должна быть
Ready.
Размещение компонентов по узлам
Распределение компонентов по узлам кластера зависит от его конфигурации. Например, в кластере могут присутствовать:
- только master-узлы, на которых работают и компоненты control plane, и нагрузка;
- только master-узлы и worker-узлы;
- master-узлы, system-узлы и worker-узлы;
- другие комбинации (в зависимости от архитектуры).
Под worker-узлами понимаются узлы, на которых нет ограничений (taints), мешающих запуску обычной рабочей нагрузки.
За что отвечает каждый компонент, описано в разделе «Подсистема Virtualization». В таблице ниже приведены компоненты control plane виртуализации и узлы, на которых они могут быть размещены. Компоненты распределяются по приоритету, и если в кластере есть подходящий тип узлов, компонент попадёт на него.
| Название компонента | Группа узлов | Комментарий |
|---|---|---|
virt-operator-* |
system/master | |
virt-api-* |
master | |
virt-controller-* |
system/worker | |
virt-handler-* |
Узлы с KVM | |
virtualization-api-* |
master | |
virtualization-controller-* |
master | |
dvcr-* |
system | На узле должно быть доступно хранилище. При отсутствии system-узлов компонент размещается на worker-узле. |
virtualization-audit-* |
master | Доступен в коммерческих редакциях DP. |
virtualization-dra-* |
Отдельные узлы | Доступен в коммерческих редакциях DP. |
vm-route-forge-* |
Все узлы кластера |
Компонент virt-handler-* запускается только на узлах, где DP обнаружил поддержку KVM и проставил лейбл virtualization.deckhouse.io/kvm-enabled, а компонент virtualization-dra-* — только на узлах с лейблом virtualization.deckhouse.io/usbip.
Компоненты, которые создают и загружают образы и диски виртуальных машин. Они запускаются только на время этой работы:
| Название компонента | Группа узлов | Комментарий |
|---|---|---|
d8v-vi-importer-*, d8v-cvi-importer-* |
system/worker | Загружает образ из внешнего источника или другого ресурса в хранилище образов. |
d8v-vi-uploader-*, d8v-cvi-uploader-* |
system/worker | Принимает файл, который вы загружаете из командной строки или веб-интерфейса. |
d8v-vd-pvc-importer-*, d8v-vi-pvc-importer-* |
system/worker | Переносит образ из хранилища образов на том диска. |
d8v-pvc-pvc-source-importer-* |
system/worker | Отдаёт данные исходного тома по сети при клонировании диска. |
d8v-pvc-pvc-target-importer-* |
system/worker | Принимает данные на целевой том при клонировании диска. |
d8v-vi-bounder-* |
system/worker | Удерживает том на нужном узле, пока образ создаётся на нём. |
Кластер с taints на всех узлах
Иногда taints настроены на всех узлах кластера. Так администратор явно контролирует, на какие узлы попадает рабочая нагрузка.
При работе модуля virtualization в такой конфигурации учитывайте следующее:
-
При создании VirtualDisk обратите внимание на
volumeBindingModeStorageClass. Если заданоImmediate, PersistentVolume создаётся сразу после создания диска, ещё до планирования виртуальной машины. Убедитесь, что хранилище может создавать тома на узлах, которые разрешены для виртуальных машин через параметры размещения, включаяnodeSelector,tolerationsи настройки вspecвиртуальной машины или VirtualMachineClass. Иначе диск может оказаться на узле, где виртуальная машина не сможет запуститься. ПриWaitForFirstConsumerтом создаётся на узле планирования виртуальной машины, и эта проблема не возникает. -
Для работы VirtualImage и ClusterVirtualImage нужны временные компоненты из таблицы выше. У них есть toleration к taint
dedicated.deckhouse.io=system. -
В кластере должна быть NodeGroup
system, либо администратор сам добавляет taintdedicated.deckhouse.io=systemна выбранные узлы без создания NodeGroup. Без таких узлов эти компоненты не будут запланированы, и образы не перейдут в фазуReady.
Обновление модуля
Модуль virtualization использует пять каналов обновлений для окружений с разными требованиями к надёжности:
| Канал обновлений | Описание |
|---|---|
| Alpha | Наименее стабильный канал обновлений с наиболее частым появлением новых версий. Ориентирован на кластеры разработки с небольшим количеством разработчиков. |
| Beta | Ориентирован на кластеры разработки, как и канал обновлений Alpha. Получает версии, предварительно опробованные на канале обновлений Alpha. |
| Early Access | Рекомендуемый канал обновлений, если вы не уверены в выборе. Подойдёт для кластеров, в которых идёт активная работа, например запускаются и дорабатываются новые приложения. Обновления функционала до этого канала обновлений доходят не ранее чем через одну неделю после их появления в релизе. |
| Stable | Стабильный канал обновлений для кластеров, в которых закончена активная работа и преимущественно осуществляется эксплуатация. Обновления функционала до этого канала обновлений доходят не ранее чем через две недели после их появления в релизе. |
| Rock Solid | Наиболее стабильный канал обновлений. Подойдёт для кластеров, которым нужен повышенный уровень стабильности. Обновления функционала до этого канала доходят не ранее чем через месяц после их появления в релизе. |
Компоненты модуля virtualization могут обновляться автоматически, либо с ручным подтверждением по мере выхода обновлений в каналах обновления.
При обновлении модуля компоненты можно разделить на две категории:
- компоненты управления ресурсами виртуализации (управляющий слой);
- компоненты запуска виртуальных машин («прошивка»).
Обновление компонентов управляющего слоя не влияет на работу уже запущенных виртуальных машин, но может ненадолго разорвать открытые соединения по VNC и через серийную консоль на время перезапуска компонента.
Обновление «прошивки» может потребовать миграции виртуальных машин на новую версию. DP мигрирует машину один раз, и если миграция не удалась, владельцу машины придётся перенести или перезагрузить её самостоятельно.
Информацию по версиям, доступным на каналах обновления, можно получить на сайте каналов обновлений.