К запущенной машине можно подключиться из командной строки и из веб-интерфейса, а тем, запущена ли она, управляет политика запуска.
Подключение к виртуальной машине
К виртуальной машине (ВМ) можно подключиться четырьмя способами. Первый — по протоколу удалённого управления вроде SSH, который вы настраиваете в гостевой ОС сами. Второй — через серийную консоль. Третий — по VNC. Четвёртый — по SPICE, если он включён у машины.
- В командной строке
- В веб-интерфейсе
Серийная консоль:
d8 v console linux-vm
Пример вывода:
Successfully connected to linux-vm console. The escape sequence is ^]
linux-vm login: cloud
Password: cloud
Чтобы выйти из консоли, нажмите Ctrl+].
Подключение по VNC:
d8 v vnc linux-vm
Подключение по SPICE:
d8 v spice linux-vm
Подключение по SSH:
d8 v ssh cloud@linux-vm
- Перейдите на вкладку «Проекты» и выберите нужный проект.
- Перейдите в раздел «Виртуализация» → «Виртуальные машины».
- Из списка выберите нужную ВМ и нажмите на её имя.
- Перейдите на вкладку «TTY» для работы с серийной консолью или на вкладку «VNC» для подключения по VNC.
Серийная консоль и VNC эксклюзивны, в них работает только один пользователь, и новое подключение отключает того, кто уже работает с машиной.
Перед подключением d8 v console и d8 v vnc сообщают, кто занял поток и с какого времени, и предлагают выбор:
The serial console of linux-vm is in use:
user serviceaccount default/alice
connected 12 minutes ago (14:32), from the d8 v command line
Connect and disconnect them? [y] yes [N] no [w] wait until free:
Ответ w означает дождаться, пока другой пользователь отключится, и подключиться автоматически. Нажатие Enter отменяет подключение, потому что по умолчанию выбран безопасный вариант. Флаг --force подключает без вопроса, и он же нужен при неинтерактивном запуске в скрипте.
Серийная консоль не меняет размер терминала автоматически. Если вывод команд переносится неправильно, задайте размер вручную командой stty rows <ROWS> cols <COLUMNS>, например stty rows 50 cols 200. Когда в системе установлен пакет xterm, ту же задачу решает команда resize.
SPICE
SPICE — второй протокол удалённого дисплея, который в отличие от VNC передаёт из гостевой системы звук, пробрасывает в неё USB-устройства с вашего компьютера и разделяет с ней буфер обмена. Он работает рядом с VNC, поэтому уже открытые VNC-сессии и веб-интерфейс продолжают работать.
По умолчанию SPICE выключен. Чтобы включить его, задайте параметр .spec.spice.enabled и перезапустите машину:
spec:
spice:
enabled: true
Вместе со SPICE машина получает видеоадаптер virtio-gpu. Если драйвера для него в гостевой системе нет, как в Windows 7 и Windows XP, задайте другую модель адаптера аннотацией virtualization.deckhouse.io/video со значением vga, bochs или ramfb.
Общий буфер обмена, подстройку разрешения под окно клиента и локальный курсор добавляет гостевой агент SPICE. Установите его в гостевой системе, в Linux это пакет spice-vdagent, в Windows — spice-guest-tools.
Для подключения нужен клиент remote-viewer из пакета virt-viewer, и команда d8 v spice открывает его сама. Если такого клиента нет, запустите только прокси и подключитесь своим клиентом на порт, который выведет команда:
d8 v spice linux-vm --proxy-only
SPICE-дисплей эксклюзивен так же, как серийная консоль и VNC, и d8 v spice предупреждает, прежде чем отключить того, кто уже подключён.
SPICE резервирует память независимо от того, подключён клиент или нет. Эта память входит в накладные расходы машины, поэтому на узле машина занимает больше памяти, чем указано в её спецификации.
Политика запуска и управление состоянием ВМ
Политика запуска определяет, как Deckhouse Platform (DP) поддерживает состояние машины. Её задаёт параметр .spec.runPolicy:
AlwaysOnUnlessStoppedManually— вариант по умолчанию. Машина всегда работает, а остановить её можно только вручную;AlwaysOn— машина всегда работает, и даже после выключения из гостевой ОС DP запускает её снова;Manual— состоянием машины вы управляете сами;AlwaysOff— машина всегда выключена, и запустить её нельзя.
Управлять состоянием машины можно двумя способами, создавая ресурс VirtualMachineOperation или пользуясь утилитой d8. Ресурс описывает действие декларативно, а утилита создаёт такой же ресурс за вас.
Команда d8 |
Тип операции | Действие |
|---|---|---|
d8 v stop |
Stop |
Остановить ВМ |
d8 v start |
Start |
Запустить ВМ |
d8 v restart |
Restart |
Перезапустить ВМ |
d8 v evict |
Evict |
Вытеснить ВМ на другой узел |
d8 v migrate |
Migrate |
Мигрировать ВМ на другой узел |
Ниже показано, как выполнить операцию над виртуальной машиной:
- В командной строке
- В веб-интерфейсе
Перезапустить машину проще всего утилитой d8:
d8 v restart linux-vm
Та же операция ресурсом:
d8 k create -f - <<EOF
apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineOperation
metadata:
generateName: restart-linux-vm-
spec:
virtualMachineName: linux-vm
# Тип выполняемой операции.
type: Restart
EOF
Результат покажет список операций:
d8 k get virtualmachineoperation
# Короткий вариант команды.
d8 k get vmop
Политика запуска задаётся на странице машины:
- Перейдите на вкладку «Проекты» и выберите нужный проект.
- Перейдите в раздел «Виртуализация» → «Виртуальные машины».
- Из списка выберите нужную ВМ и нажмите на её имя.
- На вкладке «Конфигурация» прокрутите страницу вниз до раздела «Жизненный цикл».
- Выберите нужную политику из списка «Политика запуска».
Операции доступны из списка машин:
- Перейдите в раздел «Виртуализация» → «Виртуальные машины».
- Из списка выберите нужную виртуальную машину и нажмите кнопку с многоточием.
- В открывшемся меню выберите операцию.
Для одной машины одновременно выполняется только одна операция. Новая операция либо вытесняет активную, либо завершается неудачей, и какой из вариантов сработает, зависит от пары типов:
| Активная операция | Чем её можно вытеснить |
|---|---|
Start |
Stop |
Stop или Restart без force |
Stop или Restart с force: true |
Migrate, Evict |
Stop, Restart |
Stop или Restart с force: true |
ничем |
Вытесненная операция переходит в фазу Superseded. Операция, которая вытеснить активную не может, переходит в фазу Failed, поэтому её нужно создать заново после того, как активная завершится. Восстановление и клонирование другие операции не вытесняют.