Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки

Утилита d8 — рекомендуемый способ экспорта и импорта данных томов. Все команды ниже используют неймспейс по умолчанию d8-storage-volume-data-manager и TTL по умолчанию 2m, если не указано иное.

Для сценариев без утилиты d8 (YAML-манифесты, curl, прямой HTTP API) см. FAQ.

Экспорт данных

Создание DataExport

d8 data export create [flags] <имя_data_export> <тип_тома>/<имя_тома>

Поддерживаемые типы томов:

Короткое Полное имя Kind в Kubernetes
pvc persistentvolumeclaim PersistentVolumeClaim
vs volumesnapshot VolumeSnapshot
vd virtualdisk VirtualDisk
vds virtualdisksnapshot VirtualDiskSnapshot

Флаги:

  • -n, --namespace — целевой неймспейс (по умолчанию: d8-storage-volume-data-manager)
  • --ttl — время жизни после последнего обращения (по умолчанию: 2m)
  • --publish — открыть доступ к экспортеру извне кластера (по умолчанию: false)

Пример: экспорт PVC с именем data в неймспейсе project:

d8 data export create -n project my-export pvc/data --ttl 5m

Пример: экспорт VolumeSnapshot:

d8 data export create -n project my-export vs/my-snapshot --ttl 10m

Ресурсы PVC могут быть экспортированы только в том случае, если они не смонтированы какими-либо подами в данный момент.

Просмотр содержимого экспорта

d8 data export list [flags] <имя_data_export> [/путь/]

Псевдоним: ls.

Для файловых томов путь к директории должен заканчиваться на /. Для блочных томов путь не указывается.

Пример:

d8 data export list -n project my-export /mydir/

Флаги: -n, --publish, --ttl (TTL для автоматически созданного DataExport), --cleanup.

Если первый аргумент — ссылка на том (например, pvc/data), а не имя существующего DataExport, команда автоматически создаёт временный DataExport.

Скачивание данных

d8 data export download [flags] [KIND/]<имя> [путь/файл.ext] -o <выходной_файл>

Команда может ссылаться на существующий DataExport по имени или автоматически создать его, передав ссылку на том (например, pvc/data, vs/my-snapshot).

  • Режим Filesystem: укажите путь к файлу или директории (например, /mydir/file.txt). Если -o не указан, имя выходного файла берётся из исходного пути.
  • Режим Block: путь не указывается; скачивается raw-образ блочного устройства. Если -o не указан, в качестве имени выходного файла используется имя DataExport.

Пример: скачивание файла из существующего DataExport:

d8 data export download -n project my-export /test_file.txt -o test_file.txt

Пример: автоматическое создание DataExport и скачивание из PVC:

d8 data export download -n project pvc/data /mydir/file.txt -o file.txt --ttl 5m

Пример: скачивание блочного тома из VolumeSnapshot:

d8 data export download -n project vs/my-snapshot -o data.img

Флаги: -n, -o, --publish, --ttl, --cleanup (удалить автоматически созданный DataExport без запроса при значении true).

Удаление DataExport

d8 data export delete [flags] <имя_data_export>

Пример:

d8 data export delete -n project my-export

Импорт данных

Создание DataImport

d8 data import create [flags] <имя_data_import> -f <pvc-template.yaml>

Файл шаблона PVC описывает целевой том. Пример шаблона (pvc-template.yaml):

metadata:
  name: imported-data
  namespace: project
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: local-path
  volumeMode: Filesystem

Пример:

d8 data import create my-import \
  -n project \
  -f ./pvc-template.yaml \
  --ttl 60m --publish --wffc false

Флаги:

  • -n, --namespace — целевой неймспейс (по умолчанию: d8-storage-volume-data-manager; также может быть указан в metadata шаблона)
  • -f, --file — путь к файлу шаблона PVC (обязательный)
  • --ttl — время жизни (по умолчанию: 2m)
  • --publish — открыть доступ к импортеру извне кластера (по умолчанию: false)
  • --wffc — ожидать первого потребителя (по умолчанию: false)

Загрузка данных

d8 data import upload [flags] <имя_data_import>

Загрузка локального файла на endpoint DataImport. Команда автоматически определяет uid, gid и права доступа из исходного файла.

Пример:

d8 data import upload my-import \
  -n project \
  -f ./test-file \
  -d /myfile \
  -P

Флаги:

  • -n, --namespace — целевой неймспейс
  • -f, --file — путь к локальному файлу (обязательный)
  • -d, --dstPath — путь назначения на томе (обязательный)
  • -P, --publish — использовать публичный URL DataImport
  • -c, --chunks — разбить загрузку на N частей (по умолчанию: 10)
  • --resume — возобновить прерванную загрузку с offset, сообщённого сервером

Возобновление прерванной загрузки:

d8 data import upload my-import -n project -f ./test-file -d /myfile -P --resume

Загрузка частями:

d8 data import upload my-import -n project -f ./test-file -d /myfile -P -c 4

Удаление DataImport

d8 data import delete [flags] <имя_data_import>

Пример:

d8 data import delete my-import -n project

Получение информации о ресурсе

Для просмотра созданного ресурса:

d8 k -n <namespace> get de <имя_data_export>
d8 k -n <namespace> get di <имя_data_import>

В секции status содержатся URL доступа (url), CA-сертификат (ca), публичный URL (publicURL при включённом --publish) и условия готовности.