Проброс USB-устройств доступен в коммерческих редакциях Deckhouse Platform (DP).
DP поддерживает проброс USB-устройств в виртуальные машины (ВМ) с использованием DRA (Dynamic Resource Allocation). Физическое устройство подключено к узлу кластера, а виртуальная машина работает с ним так, как будто устройство подключено напрямую к ней.
Администратор подключает устройство к узлу и делает его доступным вашему неймспейсу. После этого в неймспейсе появляется ресурс USBDevice, который вы подключаете к виртуальной машине. Если нужного устройства в списке нет, обратитесь к администратору.
Требования к узлам и версиям кластера обеспечивает администратор, от вас они не зависят.
Устройства проекта (USBDevice)
USBDevice — namespaced-ресурс, представляющий USB-устройство, доступное для подключения к виртуальным машинам в заданном неймспейсе. Появляется автоматически после того, как администратор назначит устройство неймспейсу.
Пример просмотра USB-устройств в неймспейсе:
d8 k get usbdevice -n my-project
Пример вывода:
NAME NODE MANUFACTURER PRODUCT ATTACHED AGE
logitech-webcam node-2 Logitech Webcam C920 False 10m
Идентификаторы производителя и продукта, шину, номер устройства, серийный номер, скорость и остальные сведения об устройстве ресурс хранит в блоке .status.attributes.
Условия USBDevice
Состояние устройства описывают два условия в блоке .status.conditions.
Условие Ready показывает, готово ли устройство к использованию, и принимает одну из причин:
Ready— устройство готово к использованию;NotReady— устройство существует, но не готово;NotFound— устройство отсутствует на узле.
Условие Attached показывает, подключено ли устройство к виртуальной машине:
AttachedToVirtualMachine— устройство подключено к ВМ;Available— устройство свободно и его можно подключить;DetachedForMigration— устройство отключено на время миграции ВМ и подключится снова на целевом узле;NoFreeUSBIPPort— устройство запрошено виртуальной машиной, но на целевом узле не осталось свободных USBIP-портов, поэтому условие имеет статусFalse.
Подключение USB-устройства к ВМ
Устройство подключается к машине и отключается от неё без её остановки. USB-устройство автоматически пробрасывается по сети (USBIP) на узел, где запущена машина, поэтому размещать машину на узле с устройством вручную не нужно.
Во время миграции ВМ USB-устройство ненадолго отключится и подключится на новом узле в момент переключения машины. При сбое миграции устройство останется на старом узле.
Инфраструктурные требования, лимиты USBIP-портов и обнаружение устройств на узлах описаны в разделе «USB-устройства в виртуальных машинах».
- В командной строке
- В веб-интерфейсе
Добавьте устройство в параметр .spec.usbDevices ресурса VirtualMachine:
d8 k apply -f - <<EOF
apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachine
metadata:
name: linux-vm
spec:
# ... другие настройки ВМ ...
usbDevices:
- name: logitech-webcam
EOF
После создания или обновления ВМ USB-устройство будет подключено к указанной виртуальной машине.
- Перейдите на вкладку «Проекты» и выберите нужный проект.
- Перейдите в раздел «Виртуализация» → «Виртуальные машины».
- Из списка выберите нужную ВМ и нажмите на её имя.
- На вкладке «Конфигурация» прокрутите страницу до раздела «USB-устройства» и нажмите кнопку «Добавить».
- В открывшемся окне «Подключить USB-устройство» в поле «Выберите USB-устройство» выберите устройство и нажмите кнопку «Добавить».
- Нажмите появившуюся кнопку «Сохранить».
Доступные в проекте USB-устройства отображаются в разделе «Виртуализация» → «USB-устройства»: имя ресурса, статус, производитель, продукт, серийный номер, узел, шина и номер устройства.