Проброс 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-устройство будет подключено к указанной виртуальной машине.

  1. Перейдите на вкладку «Проекты» и выберите нужный проект.
  2. Перейдите в раздел «Виртуализация» → «Виртуальные машины».
  3. Из списка выберите нужную ВМ и нажмите на её имя.
  4. На вкладке «Конфигурация» прокрутите страницу до раздела «USB-устройства» и нажмите кнопку «Добавить».
  5. В открывшемся окне «Подключить USB-устройство» в поле «Выберите USB-устройство» выберите устройство и нажмите кнопку «Добавить».
  6. Нажмите появившуюся кнопку «Сохранить».

Доступные в проекте USB-устройства отображаются в разделе «Виртуализация» → «USB-устройства»: имя ресурса, статус, производитель, продукт, серийный номер, узел, шина и номер устройства.

Дополнительные ресурсы