VirtualDisk

Scope: Namespaced
Version: v1alpha2

Ресурс VirtualDisk описывает желаемую конфигурацию диска виртуальной машины. VirtualDisk можно смонтировать в виртуальной машине статически, указав его в списке дисков .spec.blockDeviceRefs, или «на лету» – с помощью ресурса VirtualMachineBlockDeviceAttachments.

После создания VirtualDisk можно изменить только размер диска с помощью поля .spec.persistentVolumeClaim.size. Все остальные поля изменить нельзя.

  • apiVersion
    строка

    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind
    строка

    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata
    объект
  • spec
    объект

    Обязательный параметр

    • spec.dataSource
      объект
      • spec.dataSource.containerImage
        объект

        Использование образа, который хранится во внешнем реестре контейнеров. Поддерживаются только реестры контейнеров с включённым протоколом TLS. Чтобы предоставить собственную цепочку центров сертификации, используйте поле caBundle.

        • spec.dataSource.containerImage.caBundle
          строка

          Цепочка сертификатов в формате Base64 для проверки подключения к реестру контейнеров.

          Пример:

          caBundle: YWFhCg==
          
        • spec.dataSource.containerImage.image
          строка

          Обязательный параметр

          Путь к образу в реестре контейнеров.

          Шаблон: ^(?P<name>(?:(?P<domain>(?:(?:localhost|[\w-]+(?:\.[\w-]+)+)(?::\d+)?)|[\w]+:\d+)/)?(?P<image>[a-z0-9_.-]+(?:/[a-z0-9_.-]+)*))(?::(?P<tag>[\w][\w.-]{0,127}))?(?:@(?P<digest>[A-Za-z][A-Za-z0-9]*(?:[+.-_][A-Za-z][A-Za-z0-9]*)*:[0-9a-fA-F]{32,}))?$

          Пример:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret
          объект
          • spec.dataSource.containerImage.imagePullSecret.name
            строка

            Имя секрета, содержащего учётные данные для подключения к реестру контейнеров.

      • spec.dataSource.http
        объект

        Создание диска из файла, размещённого на указанном URL-адресе. Поддерживаемые схемы:

        • HTTP;
        • HTTPS.

        Для схемы HTTPS есть возможность пропустить проверку TLS.

        • spec.dataSource.http.caBundle
          строка

          Цепочка сертификатов в формате Base64 для проверки TLS-сертификата сервера, на котором размещается файл.

          Пример:

          caBundle: YWFhCg==
          
        • spec.dataSource.http.checksum
          объект

          Контрольная сумма файла для проверки целостности и отсутствия изменений в загруженных данных. Файл должен соответствовать всем указанным контрольным суммам.

          • spec.dataSource.http.checksum.md5
            строка

            Шаблон: ^[0-9a-fA-F]{32}$

            Длина: 32..32

            Пример:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256
            строка

            Шаблон: ^[0-9a-fA-F]{64}$

            Длина: 64..64

            Пример:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.url
          строка

          Обязательный параметр

          URL-адрес, указывающий на файл для создания образа. Допустимые форматы файла:

          • qcow2;
          • vmdk;
          • vdi;
          • iso;
          • raw.

          Файл может быть сжат в архив в одном из следующих форматов:

          • gz;
          • xz.

          Шаблон: ^http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+$

          Пример:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.objectRef
        объект

        Использование существующего ресурса VirtualImage, ClusterVirtualImage или VirtualDiskSnapshot для создания диска.

        • spec.dataSource.objectRef.kind
          строка

          Обязательный параметр

          Ссылка на существующий ресурс VirtualImage, ClusterVirtualImage или VirtualDiskSnapshot.

          Допустимые значения: ClusterVirtualImage, VirtualImage, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          строка

          Обязательный параметр

          Имя существующего ресурса VirtualImage, ClusterVirtualImage или VirtualDiskSnapshot.

      • spec.dataSource.type
        строка

        Доступные типы источников для создания диска:

        • HTTP — из файла, опубликованного на HTTP/HTTPS-сервере;
        • ContainerImage — из образа в реестре контейнеров;
        • ObjectRef — из существующего ресурса;
        • Upload — загрузить образ диска вручную.

        Допустимые значения: HTTP, ContainerImage, ObjectRef, Upload

    • spec.persistentVolumeClaim
      объект

      Настройки для создания PersistentVolumeClaim (PVC) для хранения диска.

      • spec.persistentVolumeClaim.size
        строка или число

        Желаемый размер PVC для хранения диска. Если диск создается из образа, размер PVC должен быть не меньше размера исходного образа в распакованном состоянии.

        Данный параметр можно опустить, если заполнен блок .spec.dataSource. В этом случае контроллер определит размер диска автоматически, на основе размера распакованного образа из источника указанного в .spec.dataSource.

        Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

      • spec.persistentVolumeClaim.storageClassName
        строка

        Имя StorageClass, необходимого для PVC. Подробнее об использовании StorageClass для PVC: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1.

        При создании дисков пользователь может явно указать необходимый StorageClass. Если этого не сделать, будет использован StorageClass, доступный по умолчанию.

        Особенности диска и поведение виртуальной машины зависят от выбранного StorageClass.

        Параметр VolumeBindingMode в StorageClass влияет на процесс создания дисков. Допустимые значения:

        • Immediate - диск будет создан и доступен для использования сразу после создания;
        • WaitForFirstConsumer - диск будет создан при первом использовании на узле, где будет запущена виртуальная машина.

        StorageClass поддерживает различные настройки хранения:

        • создание блочного устройства (Block) или файловой системы (FileSystem);
        • множественный доступ (ReadWriteMany) или единичный доступ (ReadWriteOnce). ReadWriteMany-диски поддерживают множественный доступ, что позволяет выполнять «живую» миграцию виртуальных машин. В отличие от них, ReadWriteOnce-диски, ограниченные доступом только с одного узла, не могут обеспечить такую возможность.

        Для известных типов хранилищ Deckhouse самостоятельно определит наиболее эффективные настройки при создании дисков (в порядке убывания приоритетов):

        1. Block + ReadWriteMany;
        2. FileSystem + ReadWriteMany;
        3. Block + ReadWriteOnce;
        4. FileSystem + ReadWriteOnce.