Перейти к основному содержимому

Как импортировать образ ОС в кластер

Когда использовать​

Когда в кластере нужен новый образ ОС или новая версия уже привезённого. Импорт скачивает образ из зарегистрированного источника библиотеки и раскладывает его по пулам хранения. Только после этого из образа можно создавать виртуальные машины.

Инструкция подходит и для второго случая — дораздачи. Если предыдущий импорт разложил образ не на все пулы, повторный импорт той же версии довозит недостающие копии.

Не подходит, если образ в источнике лежит в формате, отличном от zfs: такой образ импорт не берёт. Не подходит и для смены владельца образа — принадлежность ВЦОД (виртуальному центру обработки данных) выводится из прав вызывающего и параметром не задаётся.

Предусловия​

  • привилегия Import Golden Image в области целевого ВЦОД; у роли Cluster master область глобальная;
  • привилегия Sync Image Library — без неё не прочитать каталог источника и не узнать идентификатор образа;
  • в кластере развёрнут сервис раздачи vstack-center-image-distributor с обязательным vhost imgdistr_vhost; без него импорт двигать байты некому;
  • источник библиотеки зарегистрирован, и его идентификатор известен из списка источников;
  • источник доступен вызывающему: администратору ВЦОД открыт источник с привязкой к его ВЦОД, а общий кластерный источник — только роли Cluster master; проверка идёт до чтения каталога и до импорта, поэтому без доступа к источнику ответом будет -403 даже при полностью выданных привилегиях;
  • в кластере есть хотя бы один пул хранения с владельцем;
  • версия vStack Center — 3.0.5.

Шаги​

Экранов библиотеки образов в веб-интерфейсе vStack Center нет: импортом управляют программно — вызовами API кластера или системой автоматизации, которая их делает. Шаги ниже задают порядок операций; состав запросов и полный разбор ответов — в Справочнике API.

  1. Прочитайте каталог источника. Синхронизация скачивает только manifest.json, поэтому проходит быстро и ничего в кластере не меняет. В ответ приходит паспорт каждого образа источника: имя и версия, формат, путь к файлу, размер и контрольная сумма, тип гостевой ОС, минимальный размер диска, идентификатор образа и признак пригодности к импорту.

  2. Выберите образ и проверьте признак пригодности. Непригодный образ лежит в источнике в формате, отличном от zfs, — импорт его отклонит. Идентификатор для импорта берётся из поля uuid выбранного элемента манифеста: он однозначно задаёт и образ, и его версию. Поле опциональное — если источник его не заполнил, импортировать образ нечем: сначала добавьте uuid элементу в манифесте источника.

  3. Запустите импорт, указав источник и образ. Больше ничего не требуется: без явного списка пулов образ уходит на все пулы с владельцем. Чтобы разложить образ на часть пулов, перечислите нужные — остальные дораздаются повторным импортом той же версии.

    Импорт асинхронный: он сразу подтверждает приём задания, а раздачу продолжает в фоне. Подтверждение приёма — не готовность образа.

  4. Дождитесь окончания раздачи. Стадию и карту пулов показывает каталог образов кластера: стадия образа — общий исход, карта раздачи — результат по каждому пулу отдельно.

Проверка результата​

Найдите импортированный образ в каталоге кластера и сверьте два признака:

Что смотретьОжидаемое значение
Стадия образаactive — образ разложен на все выбранные пулы
Карта раздачи по пуламзапись на каждый пул из шага 3

Стадия importing означает, что раздача ещё идёт. Стадии partial_active и failed разобраны ниже.

Финальная проверка — создание машины. Копия образа на пуле, выбранном при создании ВМ, обязана быть активна, иначе создание отклоняется с кодом -259.

Если не получилось​

Импорт делает одну попытку без автоповторов. Любой сбой — скачивания, контрольной суммы, раздачи или потери задания сервисом раздачи — переводит образ в failed и оставляет запись в журнале безопасности. Повтор запускает администратор, тем же импортом. Перезапуск диспетчера в середине работы незавершённый импорт не переигрывает, а закрывает как неуспешный.

Частичный исход (partial_active) откату не подлежит: пулы с копией её сохраняют. Посмотрите в карте раздачи, каким пулам копия не досталась, и повторите импорт той же версии — он довезёт недостающие.

Код отказаЧто означаетЧто сделать
-48005формат образа не пригоден к импорту, требуется zfsвыбрать в каталоге источника образ, пригодный к импорту
-48002в каталоге источника нет образа с таким идентификаторомпереснять каталог источника: манифест мог измениться
-48003образ уже импортируетсядождаться исхода текущего импорта, повторный запуск не нужен
-48004образ в состоянии удалениядождаться завершения удаления
-48006элемент манифеста не проходит проверку: минимальный размер, размер, контрольная сумма или путь к файлуисправить манифест на стороне источника
-48007указан несуществующий пул либо в кластере нет пулов с владельцемсверить перечень пулов; проверить, что в кластере есть пул с владельцем
-48008образ с таким идентификатором уже есть в каталоге под другим источником или версиейидентификатор образа глобально уникален: выдать образу в манифесте свой uuid
-46002источника с таким идентификатором нетвзять действующий идентификатор из списка источников
-46012 (см. примечание)хост источника разрешается в запрещённый диапазонперенести библиотеку на адрес вне loopback, link-local, приватных диапазонов RFC 1918, CGNAT, «нулевой сети» и широковещательного адреса
-46020источник недоступен: сетевой сбой, таймаут или ответ не 2xxпроверить доступность адреса библиотеки из сети кластера
-46021manifest.json не разбирается как JSONпочинить синтаксис манифеста
-46022версия схемы манифеста выше поддерживаемойпривести манифест к поддерживаемой версии схемы
-46023манифест не проходит схему: у элемента нет обязательных полейдобавить name, version, format, url_path, size, sha256
-403доступ запрещёнпроверить доступ к источнику, привилегию и владение: общий кластерный источник открыт только роли Cluster master, администратору ВЦОД нужен источник с привязкой к его ВЦОД; администратор ВЦОД не импортирует общий кластерный образ и не пишет в чужой ВЦОД, а новую версию существующего образа импортирует только его владелец либо роль Cluster master
-503журнал безопасности не принял запись о намеренииимпорт не начат и ничего не изменено; восстановить доступность журнала и повторить
-48001ошибка базы данныхповторить импорт; при повторе — обратиться в поддержку

Примечание к -46012. В перечне ошибок импорта в каноне API этого кода нет, но импорт его возвращает: перед обращением к источнику адрес библиотеки проходит ту же проверку на запрещённые диапазоны, что и при регистрации источника. Перечень в каноне неполный; поведение — как описано в таблице.

См. также​

Методы API​

Операции этой страницы в API: os-library-list, os-library-sync, os-image-import, golden-images-list — см. Справочник API.