The module lifecycle stageGeneral Availability
The module has requirements for installation

The Deckhouse Kubernetes Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.

ClusterVirtualImage

Scope: Cluster
Version: v1alpha2

Describes a virtual disk image that can be used as a data source for new VirtualDisks or an installation image (iso) to be mounted in VirtualMachines directly. This resource type is available for all namespaces in the cluster.

This resource cannot be modified once it has been created.

With this resource in the cluster, a container image is created and stored in a dedicated Deckhouse Virtualization Container Registry (DVCR).

Note: The metadata.name field must comply with Kubernetes object naming conventions.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: ClusterVirtualImage
metadata:
  name: example-image
spec:
  dataSource:
    http:
      url: https://example.com/images/disk.img
    type: HTTP
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.dataSource
      object

      Required value

      Origin of the image.
      • spec.dataSource.containerImage
        object
        Use an image stored in external container registry. Only registries with enabled TLS protocol are supported. To provide a custom Certificate Authority (CA) chain, use the caBundle field.
        • spec.dataSource.containerImage.caBundle
          string
          CA chain in Base64 format to verify the container registry.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.containerImage.image
          string

          Required value

          Path to the image in the container registry.

          Pattern: ^(?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,}))?$

          Example:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret
          object
          • spec.dataSource.containerImage.imagePullSecret.name
            string
            Name of the secret keeping container registry credentials.
          • spec.dataSource.containerImage.imagePullSecret.namespace
            string
            Namespace where imagePullSecret is located.
      • spec.dataSource.http
        object

        Fill the image with data from an external URL. The following schemas are supported:

        • HTTP
        • HTTPS

        For HTTPS schema, there is an option to skip the TLS verification.

        • spec.dataSource.http.caBundle
          string
          CA chain in Base64 format to verify the URL.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.http.checksum
          object
          Checksum to verify integrity and consistency of the downloaded file. The file must match all specified checksums.
          • spec.dataSource.http.checksum.md5
            string

            Length: 32..32

            Pattern: ^[0-9a-fA-F]{32}$

            Example:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256
            string

            Length: 64..64

            Pattern: ^[0-9a-fA-F]{64}$

            Example:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.url
          string

          Required value

          URL of the file for creating an image. The following file formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw The file can be compressed into an archive in one of the following formats:
          • gz
          • xz

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

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource to create an image.
        • spec.dataSource.objectRef.kind
          string

          Required value

          Kind of the existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          string

          Required value

          Name of the existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.

          Minimal length: 1

        • spec.dataSource.objectRef.namespace
          string
          Namespace where the VirtualImage, VirtualDisk or VirtualDiskSnapshot resource is located.
      • spec.dataSource.type
        string

        Required value

        The following image sources are available for creating an image:

        • HTTP: From a file published on an HTTP/HTTPS service at a given URL.
        • ContainerImage: From another image stored in a container registry.
        • ObjectRef: From an existing resource.
        • Upload: From data uploaded by the user via a special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

  • status
    object
    • status.cdrom
      boolean
      Defines whether the image is in a format that needs to be mounted as a CD-ROM drive, such as iso and so on.
    • status.conditions
      array of objects
      The latest available observations of an object’s current state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.downloadSpeed
      object
      Image download speed from an external source. Appears only during the Provisioning phase.
      • status.downloadSpeed.avg
        string
        Average download speed.

        Example:

        avg: 1 Mbps
        
      • status.downloadSpeed.avgBytes
        string
        Average download speed in bytes per second.

        Example:

        avgBytes: 1012345
        
      • status.downloadSpeed.current
        string
        Current download speed.

        Example:

        current: 5 Mbps
        
      • status.downloadSpeed.currentBytes
        string
        Current download speed in bytes per second.

        Example:

        currentBytes: 5123456
        
    • status.format
      string
      Discovered image format.
    • status.imageUploadURLs
      object
      • status.imageUploadURLs.external
        string
        Command to upload the image using Ingress from outside the cluster.
      • status.imageUploadURLs.inCluster
        string
        Command to upload the image using Service within the cluster.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Current status of the ClusterVirtualImage resource:

      • Pending: The resource has been created and is on a waiting queue.
      • Provisioning: The resource is being created: copying, downloading, or building of the image is in progress.
      • WaitForUserUpload: Waiting for the user to upload the image. The endpoint to upload the image is specified in .status.uploadCommand.
      • Ready: The resource has been created and is ready to use.
      • Failed: There was an error when creating the resource.
      • Terminating: The resource is being deleted.
      • ImageLost: The image is missing in DVCR. The resource cannot be used.

      Allowed values: Pending, Provisioning, WaitForUserUpload, Ready, Failed, Terminating, ImageLost

    • status.progress
      string
      Progress of copying an image from the source to DVCR. Appears only during the `Provisioning’ phase.
    • status.size
      object
      Discovered image size data.
      • status.size.stored
        string
        Image size in human-readable format.

        Example:

        stored: 199M
        
      • status.size.storedBytes
        string
        Image size in bytes.

        Example:

        storedBytes: 199001234
        
      • status.size.unpacked
        string
        Unpacked image size in human-readable format.

        Example:

        unpacked: 1G
        
      • status.size.unpackedBytes
        string
        Unpacked image size in bytes.

        Example:

        unpackedBytes: 1000000234
        
    • status.sourceUID
      string
      UID of the source (VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot) used when creating the cluster virtual image.
    • status.target
      object
      • status.target.registryURL
        string
        Created image in DVCR.

        Example:

        registryURL: dvcr.<dvcr-namespace>.svc/cvi/<image-name>:latest
        
    • status.uploadCommand
      string
      Deprecated. Use imageUploadURLs instead.
    • status.usedInNamespaces
      array of strings
      Displays the list of namespaces where the image is currently used.

NodeUSBDevice

Scope: Cluster
Version: v1alpha2

Represents a USB device discovered on a specific node in the cluster. The module controller creates this resource from Kubernetes API data (ResourceSlice) published by the DRA driver.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: NodeUSBDevice
metadata:
  name: example-usb
spec:
  assignedNamespace: workloads
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.assignedNamespace
      string
      AssignedNamespace in which the device usage is allowed. By default, created with an empty value “”. When set, a corresponding USBDevice resource is created in this namespace.

      Default: ‘’

  • status
    object
    • status.attributes
      object
      All device attributes obtained through DRA for the device.
      • status.attributes.bcd
        string
        BCD (Binary Coded Decimal) device version.
      • status.attributes.bus
        string
        USB bus number.
      • status.attributes.deviceNumber
        string
        USB device number on the bus.
      • status.attributes.devicePath
        string
        Device path in the filesystem.
      • status.attributes.major
        integer
        Major device number.
      • status.attributes.manufacturer
        string
        Device manufacturer name.
      • status.attributes.minor
        integer
        Minor device number.
      • status.attributes.name
        string
        Device name.
      • status.attributes.nodeName
        string
        Node name where the device is located.
      • status.attributes.product
        string
        Device product name.
      • status.attributes.productID
        string
        USB product ID in hexadecimal format.
      • status.attributes.serial
        string
        Device serial number.
      • status.attributes.speed
        integer
        Device speed.
      • status.attributes.vendorID
        string
        USB vendor ID in hexadecimal format.
    • status.conditions
      array of objects
      The latest available observations of an object’s current state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.nodeName
      string
      Name of the node where the USB device is located.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.

USBDevice

Scope: Namespaced
Version: v1alpha2

Represents a USB device available for attachment to virtual machines in a given namespace.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: USBDevice
metadata:
  name: example-usb
  • apiVersion
    string
    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
    string
    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
    object
  • status
    object
    Observed state of USBDevice.
    • status.attributes
      object
      All device attributes obtained through DRA for the device.
      • status.attributes.bcd
        string
        BCD (Binary Coded Decimal) device version.
      • status.attributes.bus
        string
        USB bus number.
      • status.attributes.deviceNumber
        string
        USB device number on the bus.
      • status.attributes.devicePath
        string
        Device path in the filesystem.
      • status.attributes.major
        integer
        Major device number.
      • status.attributes.manufacturer
        string
        Device manufacturer name.
      • status.attributes.minor
        integer
        Minor device number.
      • status.attributes.name
        string
        Device name.
      • status.attributes.nodeName
        string
        Node name where the device is located.
      • status.attributes.product
        string
        Device product name.
      • status.attributes.productID
        string
        USB product ID in hexadecimal format.
      • status.attributes.serial
        string
        Device serial number.
      • status.attributes.speed
        integer
        Device speed.
      • status.attributes.vendorID
        string
        USB vendor ID in hexadecimal format.
    • status.conditions
      array of objects
      Latest available observations of an object’s current state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.nodeName
      string
      Name of the node where the USB device is located.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.

VirtualDisk

Scope: Namespaced
Version: v1alpha2

The VirtualDisk resource describes the desired virtual machine disk configuration. A VirtualDisk can be mounted statically in the virtual machine by specifying it in the .spec.blockDeviceRefs disk list, or mounted on-the-fly using the VirtualMachineBlockDeviceAttachments resource.

Once a VirtualDisk is created, the following fields in .spec.persistentVolumeClaim can be changed: size and storageClassName. All other fields are immutable.

Note: The metadata.name field must comply with Kubernetes object naming conventions.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualDisk
metadata:
  name: example-disk
spec:
  dataSource:
    objectRef:
      kind: VirtualImage
      name: example-image
    type: ObjectRef
  persistentVolumeClaim:
    size: 10Gi
    storageClassName: standard
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.dataSource
      object
      • spec.dataSource.containerImage
        object
        Use an image stored in an external container registry. Only registries with enabled TLS are supported. To provide a custom Certificate Authority (CA) chain, use the caBundle field.
        • spec.dataSource.containerImage.caBundle
          string
          CA chain in Base64 format to verify the container registry.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.containerImage.image
          string

          Required value

          Path to the image in the container registry.

          Pattern: ^(?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,}))?$

          Example:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret
          object
          • spec.dataSource.containerImage.imagePullSecret.name
            string
            Name of the secret keeping container registry credentials, which must be located in the same namespace.
      • spec.dataSource.http
        object

        Fill the image with data from an external URL. The following schemas are supported:

        • HTTP
        • HTTPS

        For HTTPS schema, there is an option to skip the TLS verification.

        • spec.dataSource.http.caBundle
          string
          CA chain in Base64 format to verify the URL.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.http.checksum
          object
          Checksum to verify integrity and consistency of the downloaded file. The file must match all specified checksums.
          • spec.dataSource.http.checksum.md5
            string

            Length: 32..32

            Pattern: ^[0-9a-fA-F]{32}$

            Example:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256
            string

            Length: 64..64

            Pattern: ^[0-9a-fA-F]{64}$

            Example:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.url
          string

          Required value

          URL of the file for creating an image. The following file formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw The file can be compressed into an archive in one of the following formats:
          • gz
          • xz

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

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource to create a disk.
        • spec.dataSource.objectRef.kind
          string

          Required value

          Kind of the existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          string

          Required value

          Name of the existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource.

          Minimal length: 1

      • spec.dataSource.type
        string

        The following image sources are available for creating an image:

        • HTTP: From a file published on an HTTP/HTTPS service at a given URL.
        • ContainerImage: From another image stored in a container registry.
        • ObjectRef: From an existing resource.
        • Upload: From data uploaded by the user via a special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

    • spec.persistentVolumeClaim
      object
      Settings for creating PVCs to store the disk.
      • spec.persistentVolumeClaim.size
        integer or string

        Desired size for PVC to store the disk. If the disk is created from an image, the size must be at least as large as the original unpacked image.

        This parameter can be omitted if the .spec.dataSource section is filled out. In this case, the controller will determine the disk size automatically, based on the size of the extracted image from the source specified in .spec.dataSource.

        Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

      • spec.persistentVolumeClaim.storageClassName
        string

        StorageClass name required by the claim. For details on using StorageClass for PVC, refer to https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1.

        When creating disks, the user can specify the required StorageClass. If not specified, the default StorageClass will be used.

        The disk features and virtual machine behavior depend on the selected StorageClass.

        The VolumeBindingMode parameter in the StorageClass affects the disk creation process. The following values are allowed:

        • Immediate: The disk will be created and becomes available for use immediately after creation.
        • WaitForFirstConsumer: The disk will be created when first used on the node where the virtual machine will be started.

        StorageClass supports multiple storage settings:

        • Creating a block device (Block) or file system (FileSystem).
        • Multiple access (ReadWriteMany) or single access (ReadWriteOnce). The ReadWriteMany disks support multiple access, which enables a “live” migration of virtual machines. In contrast, the ReadWriteOnce disks, which can be accessed from only one node, don’t have this feature.

        For known storage types, Deckhouse automatically determines the most efficient settings when creating disks (by priority, in descending order):

        1. Block + ReadWriteMany
        2. FileSystem + ReadWriteMany
        3. Block + ReadWriteOnce
        4. FileSystem + ReadWriteOnce
  • status
    object
    • status.attachedToVirtualMachines
      array of objects
      List of VirtualMachines that use the disk.

      Example:

      attachedToVirtualMachines:
      - name: VM100
      
      • status.attachedToVirtualMachines.mounted
        boolean
        Flag indicating that VirtualDisk is currently being used by this attached VirtualMachine.
      • status.attachedToVirtualMachines.name
        string
        Name of attached VirtualMachine.
    • status.capacity
      string
      Requested PVC capacity in human-readable format.

      Example:

      capacity: 50G
      
    • status.conditions
      array of objects
      The latest available observations of an object’s current state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.downloadSpeed
      object
      Image download speed from an external source. Appears only during the Provisioning phase.
      • status.downloadSpeed.avg
        string
        Average download speed.

        Example:

        avg: 1 Mbps
        
      • status.downloadSpeed.avgBytes
        string
        Average download speed in bytes per second.

        Example:

        avgBytes: 1012345
        
      • status.downloadSpeed.current
        string
        Current download speed.

        Example:

        current: 5 Mbps
        
      • status.downloadSpeed.currentBytes
        string
        Current download speed in bytes per second.

        Example:

        currentBytes: 5123456
        
    • status.imageUploadURLs
      object
      • status.imageUploadURLs.external
        string
        Command to upload the image using Ingress from outside the cluster.
      • status.imageUploadURLs.inCluster
        string
        Command to upload the image using Service within the cluster.
    • status.migrationState
      object
      Migration information.
      • status.migrationState.endTimestamp
        string
      • status.migrationState.message
        string
      • status.migrationState.result
        string
        VirtualDiskMigrationResult is the result of the VirtualDisk migration.

        Allowed values: Succeeded, Failed

      • status.migrationState.sourcePVC
        string
        Source PersistentVolumeClaim name.
      • status.migrationState.startTimestamp
        string
      • status.migrationState.targetPVC
        string
        Target PersistentVolumeClaim name.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Current status of the VirtualDisk resource:

      • Pending: The resource has been created and is on a waiting queue.
      • Provisioning: The resource is being created: copying, downloading, loading data to the PVC, or extending the PVC.
      • WaitForUserUpload: Waiting for the user to upload the image. The endpoint to upload the image is specified in .status.uploadCommand.
      • WaitForFirstConsumer: Waiting for the virtual machine using the disk to be assigned to the node.
      • Ready: The resource has been created and is ready to use.
      • Resizing: The process of resource resizing is in progress.
      • Failed: There was an error when creating the resource.
      • PVCLost: The child PVC of the resource is missing. The resource cannot be used.
      • Exporting: The child PV of the resource is in the process of exporting.
      • Terminating: The resource is being deleted.
      • Migrating: The resource is being migrating.

      Allowed values: Pending, Provisioning, WaitForUserUpload, WaitForFirstConsumer, Ready, Resizing, Failed, PVCLost, Exporting, Terminating, Migrating

    • status.progress
      string
      Progress of copying an image from a source to PVC. Appears only during the `Provisioning’ phase.
    • status.sourceUID
      string
      UID is a type that holds unique ID values, including UUIDs. Because we don’t ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated.
    • status.stats
      object
      VirtualDisk statistics.
      • status.stats.creationDuration
        object
        Waiting time for the virtual disk creation.
        • status.stats.creationDuration.dvcrProvisioning
          string
          Duration of the loading into DVCR.
        • status.stats.creationDuration.totalProvisioning
          string
          Duration of the resource creation from the moment dependencies are ready until the resource transitions to the Ready state.
        • status.stats.creationDuration.waitingForDependencies
          string
          Waiting time for dependent resources.
        • status.stats.creationDuration.waitingForFirstConsumer
          string
          Waiting time in the WaitForFirstConsumer phase.
    • status.storageClassName
      string
      Name of the StorageClass used by the PersistentVolumeClaim if Kubernetes storage type is used.
    • status.target
      object
      • status.target.persistentVolumeClaimName
        string
        Created PersistentVolumeClaim name for the Kubernetes storage.
    • status.uploadCommand
      string
      Deprecated. Use ImageUploadURLs instead.

VirtualDiskSnapshot

Scope: Namespaced
Version: v1alpha2

Provides a resource for creating snapshots of existing virtual disks, which can be used as data sources for generating new virtual disks.

When running, a VolumeSnapshot resource is created.

  • spec
    object
    • spec.requiredConsistency
      boolean

      Create a snapshot of a connected virtual machine’s disk only if it is possible to freeze the machine through the agent.

      If set to True, a virtual disk snapshot will be created when at least one of the following conditions is met:

      • The virtual disk is not connected to any virtual machine.
      • The virtual disk is connected to a powered-off virtual machine.
      • The virtual disk is connected to a virtual machine with an agent, and the freeze operation was successful.

      Default: true

    • spec.virtualDiskName
      string

      Required value

      Virtual disk name the snapshot is created for.

      Minimal length: 1

  • status
    object
    • status.conditions
      array of objects
      Last confirmed status of the resource.
      • status.conditions.lastTransitionTime
        string
        Last time the condition transitioned from one status to another.
      • status.conditions.message
        string
        Human-readable message with details about the last transition.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        .metadata.generation the condition was based upon. For instance, if .metadata.generation is currently 12 but .status.conditions[x].observedGeneration is 9, the condition is considered outdated.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        Brief reason for the condition’s last transition.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        Condition status. Possible values: True, False, or Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        Condition type.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.consistent
      boolean
      Virtual disk snapshot is consistent.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Current status of the VirtualDiskSnapshot resource:

      • Pending: The resource has been created and is on a waiting queue.
      • InProgress: The virtual disk snapshot is being created.
      • Ready: The virtual disk snapshot has been created successfully and is now available to use.
      • Failed: There was an error when creating the virtual disk snapshot.
      • Terminating: The resource is being deleted.

      Allowed values: Pending, InProgress, Ready, Failed, Terminating

    • status.volumeSnapshotName
      string
      Name of the created VolumeSnapshot resource.

VirtualImage

Scope: Namespaced
Version: v1alpha2

This resource describes a virtual disk image to use as a data source for new VirtualDisk resources or an installation image (iso) that can be mounted into the VirtualMachine resource.

This resource cannot be modified once it has been created.

With this resource in the cluster, a container image is created and stored in a dedicated Deckhouse Virtualization Container Registry (DVCR) or PVC, with the data filled in from the source.

Note: The metadata.name field must comply with Kubernetes object naming conventions.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualImage
metadata:
  name: example-image
spec:
  dataSource:
    http:
      url: https://example.com/images/disk.img
    type: HTTP
  storage: ContainerRegistry
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.dataSource
      object

      Required value

      • spec.dataSource.containerImage
        object
        Use an image stored in an external container registry. Only registries with enabled TLS protocol are supported. To provide a custom Certificate Authority (CA) chain, use the caBundle field.
        • spec.dataSource.containerImage.caBundle
          string
          CA chain in Base64 format to verify the container registry.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.containerImage.image
          string

          Required value

          Path to the image in the container registry.

          Pattern: ^(?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,}))?$

          Example:

          image: registry.example.com/images/slackware:15
          
        • spec.dataSource.containerImage.imagePullSecret
          object
          • spec.dataSource.containerImage.imagePullSecret.name
            string
            Name of the secret keeping container registry credentials, which must be located in the same namespace.
      • spec.dataSource.http
        object

        Fill the image with data from an external URL. The following schemas are supported:

        • HTTP
        • HTTPS

        For HTTPS schema, there is an option to skip the TLS verification.

        • spec.dataSource.http.caBundle
          string
          CA chain in Base64 format to verify the URL.

          Example:

          caBundle: YWFhCg==
          
        • spec.dataSource.http.checksum
          object
          Checksum to verify integrity and consistency of the downloaded file. The file must match all specified checksums.
          • spec.dataSource.http.checksum.md5
            string

            Length: 32..32

            Pattern: ^[0-9a-fA-F]{32}$

            Example:

            md5: f3b59bed9f91e32fac1210184fcff6f5
            
          • spec.dataSource.http.checksum.sha256
            string

            Length: 64..64

            Pattern: ^[0-9a-fA-F]{64}$

            Example:

            sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
            
        • spec.dataSource.http.url
          string

          Required value

          URL of the file for creating an image. The following file formats are supported:

          • qcow2
          • vmdk
          • vdi
          • iso
          • raw The file can be compressed into an archive in one of the following formats:
          • gz
          • xz

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

          Example:

          url: https://mirror.example.com/images/slackware-15.qcow.gz
          
      • spec.dataSource.objectRef
        object
        Use an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource to create an image.
        • spec.dataSource.objectRef.kind
          string

          Required value

          Kind of an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.

          Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk, VirtualDiskSnapshot

        • spec.dataSource.objectRef.name
          string

          Required value

          Name of an existing VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot resource.

          Minimal length: 1

      • spec.dataSource.type
        string

        The following image sources are available for creating an image:

        • HTTP: From a file published on an HTTP/HTTPS service at a given URL.
        • ContainerImage: From another image stored in a container registry.
        • ObjectRef: From an existing resource.
        • Upload: From data uploaded by the user via a special interface.

        Allowed values: HTTP, ContainerImage, ObjectRef, Upload

    • spec.persistentVolumeClaim
      object
      Settings for creating PVCs to store an image with the storage type PersistentVolumeClaim.
      • spec.persistentVolumeClaim.storageClassName
        string

        Name of the StorageClass required by the claim. For details on using StorageClass for PVC, refer to — https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1.

        When creating an image with the PersistentVolumeClaim storage type, the user can specify the required StorageClass. If not specified, the default StorageClass will be used.

    • spec.storage
      string

      Required value

      Storage type to keep the image for the current virtualization setup.

      • ContainerRegistry: Use the DVCR container registry. In this case, images are downloaded to a container and then to DVCR (shipped with the virtualization module).
      • PersistentVolumeClaim: Use a PVC.
      • Kubernetes: A deprecated storage type. Not recommended for use and may be removed in future versions. Use PersistentVolumeClaim instead.

      Default: ContainerRegistry

      Allowed values: ContainerRegistry, Kubernetes, PersistentVolumeClaim

  • status
    object
    • status.cdrom
      boolean
      Whether the image is in a format that needs to be mounted as a CD-ROM drive, such as iso and so on.
    • status.conditions
      array of objects
      The latest available observations of an object’s current state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.downloadSpeed
      object
      Image download speed from an external source. Appears only during the Provisioning phase.
      • status.downloadSpeed.avg
        string
        Average download speed.

        Example:

        avg: 1 Mbps
        
      • status.downloadSpeed.avgBytes
        string
        Average download speed in bytes per second.

        Example:

        avgBytes: 1012345
        
      • status.downloadSpeed.current
        string
        Current download speed.

        Example:

        current: 5 Mbps
        
      • status.downloadSpeed.currentBytes
        string
        Current download speed in bytes per second.

        Example:

        currentBytes: 5123456
        
    • status.format
      string
      Discovered image format.
    • status.imageUploadURLs
      object
      • status.imageUploadURLs.external
        string
        Command to upload the image using Ingress from outside the cluster.
      • status.imageUploadURLs.inCluster
        string
        Command to upload the image using Service within the cluster.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Current status of the ClusterVirtualImage resource:

      • Pending: The resource has been created and is on a waiting queue.
      • Provisioning: The resource is being created: copying, downloading, or building the image.
      • WaitForUserUpload: Waiting for the user to upload the image. The endpoint to upload the image is specified in .status.uploadCommand.
      • Ready: The resource has been created and is ready to use.
      • Failed: There was an error when creating the resource.
      • Terminating: The resource is being deleted.
      • ImageLost: The image is missing in DVCR. The resource cannot be used.
      • PVCLost: The child PVC of the resource is missing. The resource cannot be used.

      Allowed values: Pending, Provisioning, WaitForUserUpload, Ready, Failed, Terminating, ImageLost, PVCLost

    • status.progress
      string
      Progress of copying an image from a source to DVCR.
    • status.size
      object
      Discovered image size data.
      • status.size.stored
        string
        Image size in human-readable format.

        Example:

        stored: 199M
        
      • status.size.storedBytes
        string
        Image size in bytes.

        Example:

        storedBytes: 199001234
        
      • status.size.unpacked
        string
        Unpacked image size in human-readable format.

        Example:

        unpacked: 1G
        
      • status.size.unpackedBytes
        string
        Unpacked image size in bytes.

        Example:

        unpackedBytes: 1000000234
        
    • status.sourceUID
      string
      UID of the source (VirtualImage, ClusterVirtualImage, VirtualDisk or VirtualDiskSnapshot) used when creating the virtual image.
    • status.storageClassName
      string
      Name of the StorageClass used by the PersistentVolumeClaim if Kubernetes storage type is used.
    • status.target
      object
      • status.target.persistentVolumeClaimName
        string
        Created PersistentVolumeClaim name for the PersistentVolumeClaim storage.
      • status.target.registryURL
        string
        Created image in DVCR.

        Example:

        registryURL: dvcr.<dvcr-namespace>.svc/vi/<image-namespace>/<image-name>:latest
        
    • status.uploadCommand
      string
      Deprecated. Use imageUploadURLs instead.

VirtualMachineBlockDeviceAttachment

Scope: Namespaced
Version: v1alpha2

VirtualMachineBlockDeviceAttachment provides a hot plug for attaching a disk to a virtual machine. Disks are always attached using the SCSI bus, regardless of the enableParavirtualization setting.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineBlockDeviceAttachment
metadata:
  name: attach-example-data-disk
spec:
  blockDeviceRef:
    kind: VirtualDisk
    name: example-data-disk
  virtualMachineName: example-vm
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.blockDeviceRef
      object

      Required value

      Block device that will be connected to the VM as a hot-plug disk.
      • spec.blockDeviceRef.kind
        string

        Block device type. Available options:

        • VirtualDisk: Use VirtualDisk as the disk. This type is always mounted in RW mode.
        • VirtualImage: Use VirtualImage as the disk. This type is always mounted in RO mode.
        • ClusterVirtualImage: Use ClusterVirtualImage as the disk. This type is always mounted in RO mode.

        Allowed values: VirtualDisk, VirtualImage, ClusterVirtualImage

      • spec.blockDeviceRef.name
        string
        Name of the block device to attach.

        Minimal length: 1

    • spec.virtualMachineName
      string

      Required value

      Virtual machine name the disk or image should be attached to.

      Minimal length: 1

  • status
    object
    • status.conditions
      array of objects
      Contains details of the current API resource state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      BlockDeviceAttachmentPhase defines the current status of the resource:

      • Pending: The resource has been created and is on a waiting queue.
      • InProgress: The disk is being attached to the VM.
      • Attached: The disk has been attached to the VM.
      • Failed: There was an error when attaching the disk.
      • Terminating: The resource is being deleted.

      Allowed values: Pending, InProgress, Attached, Failed, Terminating

    • status.virtualMachineName
      string
      Name of the virtual machine the disk is attached to.

VirtualMachineClass

Scope: Cluster

VirtualMachineClass resource describes CPU requirements, node placement, and sizing policy for VM resources. A resource cannot be deleted as long as it is used in one of the VMs.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha3
kind: VirtualMachineClass
metadata:
  name: example-class
spec:
  cpu:
    type: Host
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.cpu
      object

      Required value

      CPU defines the requirements for the virtual CPU model.
      • spec.cpu.discovery
        object
        Create a CPU model based on intersecting CPU features for selected nodes.
        • spec.cpu.discovery.nodeSelector
          object
          A selection of nodes to be used as the basis for creating a universal CPU model.
          • spec.cpu.discovery.nodeSelector.matchExpressions
            array of objects
            matchExpressions is a list of label selector requirements. The requirements are ANDed.
            • spec.cpu.discovery.nodeSelector.matchExpressions.key
              string
              key is the label key that the selector applies to.
            • spec.cpu.discovery.nodeSelector.matchExpressions.operator
              string
              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
            • spec.cpu.discovery.nodeSelector.matchExpressions.values
              array of strings
              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
          • spec.cpu.discovery.nodeSelector.matchLabels
            object
            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
      • spec.cpu.features
        array of strings
        List of CPU instructions (features) required when type=Features. For more information about CPU features, refer to the libvirt docs.

        Example:

        features:
        - mmx
        - vmx
        - sse2
        
      • spec.cpu.model
        string
        CPU model name. For more information about CPU models and topology, refer to the libvirt docs.

        Minimal length: 1

        Example:

        model: IvyBridge
        
      • spec.cpu.type
        string

        Required value

        CPUType defines the CPU type, the following options are supported:

        • Host: Uses a virtual CPU with an instruction set closely matching the platform node’s CPU. This provides high performance and functionality, as well as compatibility with “live” migration for nodes with similar processor types. For example, VM migration between nodes with Intel and AMD processors will not work. This is also true for different CPU generations, as their instruction set is different.
        • HostPassthrough: Uses the platform node’s physical CPU directly, without any modifications. When using this class, the guest VM can only be transferred to a target node with a CPU exactly matching the source node’s CPU.
        • Discovery: Create a virtual CPU based on instruction sets of physical CPUs for a selected set of nodes.
        • Model: CPU model. A CPU model is a named and previously defined set of supported CPU instructions.
        • Features: A required set of supported instructions for the CPU.

        Allowed values: Host, HostPassthrough, Discovery, Model, Features

    • spec.nodeSelector
      object
      NodeSelector defines the nodes targeted for VM scheduling.
      • spec.nodeSelector.matchExpressions
        array of objects
        A list of node selector requirements by node’s labels.
        • spec.nodeSelector.matchExpressions.key
          string
          The label key that the selector applies to.
        • spec.nodeSelector.matchExpressions.operator
          string
          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
        • spec.nodeSelector.matchExpressions.values
          array of strings
          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
      • spec.nodeSelector.matchLabels
        object
        A map of {key,value} pairs. A single {key,value} pair in the matchLabels map is equivalent to an element of matchExpressions whose key field is “key”, operator is “In”, and the value array contains only “value”. The requirements are ANDed.
    • spec.sizingPolicies
      array of objects
      • spec.sizingPolicies.coreFractions
        array of strings
        Allowed values of the coreFraction parameter in percentages (e.g., “5%”, “10%”, “25%”, “50%”, “100%”).
        • spec.sizingPolicies.coreFractions.Element of the array
          string
          CoreFractionValue represents CPU core fraction as a percentage string (e.g., “5%”, “10%”, “25%”, “50%”, “100%”).
      • spec.sizingPolicies.cores
        object
        The policy applies for a specified range of the number of CPU cores.
        • spec.sizingPolicies.cores.max
          integer

          Required value

          Maximum number of CPU cores.

          Allowed values: X <= 1024

          Example:

          max: 10
          
        • spec.sizingPolicies.cores.min
          integer

          Required value

          Minimum number of CPU cores.

          Allowed values: 1 <= X

          Example:

          min: 1
          
        • spec.sizingPolicies.cores.step
          integer
          Discretization step for the CPU core number. For example, the combination of min=2, max=10, and step=4 allows to set the number of virtual machine CPU cores to 2, 6, or 10.

          Allowed values: 1 <= X

          Example:

          step: 1
          
      • spec.sizingPolicies.dedicatedCores
        array of booleans
        Allowed values of the dedicatedCores parameter.
      • spec.sizingPolicies.defaultCoreFraction
        string
        A default CoreFraction value for a VirtualMachine if it is not provided.
      • spec.sizingPolicies.memory
        object
        Memory sizing policy.
        • spec.sizingPolicies.memory.max
          integer or string
          Maximum amount of memory.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Example:

          max: 8Gi
          
        • spec.sizingPolicies.memory.min
          integer or string
          Minimum amount of memory.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Example:

          min: 1Gi
          
        • spec.sizingPolicies.memory.perCore
          object
          Amount of memory per CPU core.
          • spec.sizingPolicies.memory.perCore.max
            integer or string
            Maximum amount of memory.

            Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Example:

            max: 8Gi
            
          • spec.sizingPolicies.memory.perCore.min
            integer or string
            Minimum amount of memory.

            Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Example:

            min: 1Gi
            
        • spec.sizingPolicies.memory.step
          integer or string
          Memory size discretization step. For example, the combination of min=2Gi, max=4Giandstep=1Gi` allows to set the virtual machine memory size to 2Gi, 3Gi, or 4Gi.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Example:

          step: 512Mi
          
    • spec.tolerations
      array of objects
      Tolerations are the same as spec.tolerations for pods. These tolerations will be merged with the tolerations specified in the VirtualMachine resource. VirtualMachine tolerations have a higher priority.
      • spec.tolerations.effect
        string
        Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
      • spec.tolerations.key
        string
        Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
      • spec.tolerations.operator
        string
        Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
      • spec.tolerations.tolerationSeconds
        integer
        TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
      • spec.tolerations.value
        string
        Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
  • status
    object
    • status.availableNodes
      array of strings
      List of nodes that support this CPU model. It is not displayed for the following types: Host, HostPassthrough.

      Example:

      availableNodes:
      - node-1
      - node-2
      
    • status.conditions
      array of objects
      The latest detailed observations of the VirtualMachineClass resource.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.cpuFeatures
      object
      CpuFeatures Information on CPU features supported by this model. Shown only for Features or Discovery types.
      • status.cpuFeatures.enabled
        array of strings
        List of CPU features for this model.

        Example:

        enabled:
        - mmx
        - vmx
        - sse2
        
      • status.cpuFeatures.notEnabledCommon
        array of strings
        List of unused processor features additionally available for a given group of nodes.

        Example:

        notEnabledCommon:
        - ssse3
        - vme
        
    • status.maxAllocatableResources
      object
      Maximum amount of free CPU and memory resources observed among all available nodes.

      Example:

      maxAllocatableResources:
      - 'maxAllocatableResources: {"cpu": 1, "memory": "10Gi"}'
      
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Required value

      VirtualMachineClassPhase defines the current resource status:

      • Pending: The resource is not ready and waits until the suitable nodes supporting the required CPU model are available.
      • Ready: The resource is ready and available for use.
      • Terminating: The resource is terminating.

      Allowed values: Pending, Ready, Terminating

VirtualMachineClass resource describes CPU requirements, node placement, and sizing policy for VM resources. A resource cannot be deleted as long as it is used in one of the VMs.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineClass
metadata:
  name: example-class
spec:
  cpu:
    type: Host
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.cpu
      object

      Required value

      CPU defines the requirements for the virtual CPU model.
      • spec.cpu.discovery
        object
        Create a CPU model based on intersecting CPU features for selected nodes.
        • spec.cpu.discovery.nodeSelector
          object
          A selection of nodes to be used as the basis for creating a universal CPU model.
          • spec.cpu.discovery.nodeSelector.matchExpressions
            array of objects
            matchExpressions is a list of label selector requirements. The requirements are ANDed.
            • spec.cpu.discovery.nodeSelector.matchExpressions.key
              string
              key is the label key that the selector applies to.
            • spec.cpu.discovery.nodeSelector.matchExpressions.operator
              string
              operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
            • spec.cpu.discovery.nodeSelector.matchExpressions.values
              array of strings
              values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
          • spec.cpu.discovery.nodeSelector.matchLabels
            object
            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
      • spec.cpu.features
        array of strings
        List of CPU instructions (features) required when type=Features. For more information about CPU features, refer to the libvirt docs.

        Example:

        features:
        - mmx
        - vmx
        - sse2
        
      • spec.cpu.model
        string
        CPU model name. For more information about CPU models and topology, refer to the libvirt docs.

        Minimal length: 1

        Example:

        model: IvyBridge
        
      • spec.cpu.type
        string

        Required value

        CPUType defines the CPU type, the following options are supported:

        • Host: Uses a virtual CPU with an instruction set closely matching the platform node’s CPU. This provides high performance and functionality, as well as compatibility with “live” migration for nodes with similar processor types. For example, VM migration between nodes with Intel and AMD processors will not work. This is also true for different CPU generations, as their instruction set is different.
        • HostPassthrough: Uses the platform node’s physical CPU directly, without any modifications. When using this class, the guest VM can only be transferred to a target node with a CPU exactly matching the source node’s CPU.
        • Discovery: Create a virtual CPU based on instruction sets of physical CPUs for a selected set of nodes.
        • Model: CPU model. A CPU model is a named and previously defined set of supported CPU instructions.
        • Features: A required set of supported instructions for the CPU.

        Allowed values: Host, HostPassthrough, Discovery, Model, Features

    • spec.nodeSelector
      object
      NodeSelector defines the nodes targeted for VM scheduling.
      • spec.nodeSelector.matchExpressions
        array of objects
        A list of node selector requirements by node’s labels.
        • spec.nodeSelector.matchExpressions.key
          string
          The label key that the selector applies to.
        • spec.nodeSelector.matchExpressions.operator
          string
          Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
        • spec.nodeSelector.matchExpressions.values
          array of strings
          An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
      • spec.nodeSelector.matchLabels
        object
        A map of {key,value} pairs. A single {key,value} pair in the matchLabels map is equivalent to an element of matchExpressions whose key field is “key”, operator is “In”, and the value array contains only “value”. The requirements are ANDed.
    • spec.sizingPolicies
      array of objects
      • spec.sizingPolicies.coreFractions
        array of integers
        Allowed values of the coreFraction parameter.
        • spec.sizingPolicies.coreFractions.Element of the array
          integer

          Allowed values: 1 <= X <= 100

      • spec.sizingPolicies.cores
        object
        The policy applies for a specified range of the number of CPU cores.
        • spec.sizingPolicies.cores.max
          integer

          Required value

          Maximum number of CPU cores.

          Allowed values: X <= 1024

          Example:

          max: 10
          
        • spec.sizingPolicies.cores.min
          integer

          Required value

          Minimum number of CPU cores.

          Allowed values: 1 <= X

          Example:

          min: 1
          
        • spec.sizingPolicies.cores.step
          integer
          Discretization step for the CPU core number. For example, the combination of min=2, max=10, and step=4 allows to set the number of virtual machine CPU cores to 2, 6, or 10.

          Allowed values: 1 <= X

          Example:

          step: 1
          
      • spec.sizingPolicies.dedicatedCores
        array of booleans
        Allowed values of the dedicatedCores parameter.
      • spec.sizingPolicies.defaultCoreFraction
        integer
        A default CoreFraction value for a VirtualMachine if it is not provided.

        Allowed values: 1 <= X <= 100

      • spec.sizingPolicies.memory
        object
        Memory sizing policy.
        • spec.sizingPolicies.memory.max
          integer or string
          Maximum amount of memory.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Example:

          max: 8Gi
          
        • spec.sizingPolicies.memory.min
          integer or string
          Minimum amount of memory.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Example:

          min: 1Gi
          
        • spec.sizingPolicies.memory.perCore
          object
          Amount of memory per CPU core.
          • spec.sizingPolicies.memory.perCore.max
            integer or string
            Maximum amount of memory.

            Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Example:

            max: 8Gi
            
          • spec.sizingPolicies.memory.perCore.min
            integer or string
            Minimum amount of memory.

            Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

            Example:

            min: 1Gi
            
        • spec.sizingPolicies.memory.step
          integer or string
          Memory size discretization step. For example, the combination of min=2Gi, max=4Giandstep=1Gi` allows to set the virtual machine memory size to 2Gi, 3Gi, or 4Gi.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          Example:

          step: 512Mi
          
    • spec.tolerations
      array of objects
      Tolerations are the same as spec.tolerations for pods. These tolerations will be merged with the tolerations specified in the VirtualMachine resource. VirtualMachine tolerations have a higher priority.
      • spec.tolerations.effect
        string
        Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
      • spec.tolerations.key
        string
        Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
      • spec.tolerations.operator
        string
        Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
      • spec.tolerations.tolerationSeconds
        integer
        TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
      • spec.tolerations.value
        string
        Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
  • status
    object
    • status.availableNodes
      array of strings
      List of nodes that support this CPU model. It is not displayed for the following types: Host, HostPassthrough.

      Example:

      availableNodes:
      - node-1
      - node-2
      
    • status.conditions
      array of objects
      The latest detailed observations of the VirtualMachineClass resource.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.cpuFeatures
      object
      CpuFeatures Information on CPU features supported by this model. Shown only for Features or Discovery types.
      • status.cpuFeatures.enabled
        array of strings
        List of CPU features for this model.

        Example:

        enabled:
        - mmx
        - vmx
        - sse2
        
      • status.cpuFeatures.notEnabledCommon
        array of strings
        List of unused processor features additionally available for a given group of nodes.

        Example:

        notEnabledCommon:
        - ssse3
        - vme
        
    • status.maxAllocatableResources
      object
      Maximum amount of free CPU and memory resources observed among all available nodes.

      Example:

      maxAllocatableResources:
      - 'maxAllocatableResources: {"cpu": 1, "memory": "10Gi"}'
      
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Required value

      VirtualMachineClassPhase defines the current resource status:

      • Pending: The resource is not ready and waits until the suitable nodes supporting the required CPU model are available.
      • Ready: The resource is ready and available for use.
      • Terminating: The resource is terminating.

      Allowed values: Pending, Ready, Terminating

VirtualMachineIPAddress

Scope: Namespaced
Version: v1alpha2

Defines the IP address for a virtual machine.
  • apiVersion
    string
  • kind
    string
  • metadata
    object
  • spec
    object
    VirtualMachineIPAddress settings.
    • spec.staticIP
      string
      Requested static IP address to assign to the virtual machine. This field is required only if type is set to ‘Static’.
    • spec.type
      string

      Required value

      Specifies the IP address assigning mode. Possible values:

      • Auto: For assigning the IP address automatically.
      • Static: For assigning a specific IP address.

      Allowed values: Auto, Static

  • status
    object
    • status.address
      string
      Assigned IP address.
    • status.conditions
      array of objects
      Last confirmed status of the resource.
      • status.conditions.lastTransitionTime
        string
        Last time the condition transitioned from one status to another.
      • status.conditions.message
        string
        Human-readable message with details about the last transition.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        .metadata.generation the condition was based upon. For instance, if .metadata.generation is currently 12 but .status.conditions[x].observedGeneration is 9, the condition is considered outdated.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        Brief reason for the condition’s last transition.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        Condition status. Possible values: True, False, or Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        Condition type.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Represents the current state of the VirtualMachineIPAddress resource.

      • Pending: The resource is being created.
      • Bound: The VirtualMachineIPAddress has been bound to the VirtualMachineIPAddressLease resource.
      • Attached: The VirtualMachineIPAddress is attached to the VirtualMachine resource.

      Allowed values: Pending, Bound, Attached

    • status.virtualMachineName
      string
      Virtual machine name that is currently using the IP address.

VirtualMachineIPAddressLease

Scope: Cluster
Version: v1alpha2

Resource confirming the issued lease for VirtualMachineIPAddress.
  • apiVersion
    string
  • kind
    string
  • metadata
    object
  • spec
    object
    VirtualMachineIPAddressLease configuration parameter.
    • spec.virtualMachineIPAddressRef
      object
      Link to the existing VirtualMachineIPAddress resources.
      • spec.virtualMachineIPAddressRef.name
        string

        Required value

        Name of the reference VirtualMachineIPAddress resource.
      • spec.virtualMachineIPAddressRef.namespace
        string

        Required value

        Namespace of the reference VirtualMachineIPAddress resource.
  • status
    object
    • status.conditions
      array of objects
      Last confirmed status of the resource.
      • status.conditions.lastTransitionTime
        string
        Last time the condition transitioned from one status to another.
      • status.conditions.message
        string
        Human-readable message with details about the last transition.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        .metadata.generation the condition was based upon. For instance, if .metadata.generation is currently 12 but .status.conditions[x].observedGeneration is 9, the condition is considered outdated.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        Brief reason for the condition’s last transition.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        Condition status. Possible values: True, False, or Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        Condition type.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Represents the current state of the VirtualMachineIPAddressLease resource.

      • Bound: The VirtualMachineIPAddressLease has been bound to the VirtualMachineIPAddress resource.
      • Released: The VirtualMachineIPAddressLease resource is available for binding to the new VirtualMachineIPAddress resource.

      Allowed values: Bound, Released

VirtualMachineMACAddress

Scope: Namespaced
Version: v1alpha2

The resource is used to assign a MAC address to a virtual machine’s network interface.
  • apiVersion
    string
  • kind
    string
  • metadata
    object
  • spec
    object
    The desired state of VirtualMachineMACAddress.
    • spec.address
      string
      The requested MAC address to be assigned to the virtual machine’s network interface. If the field is empty, the MAC address is generated automatically according to the following principle: the first three octets (OUI) are formed based on the cluster UID, and the last three octets are randomly selected from the range 00:00:00 to FF:FF:FF.

      Pattern: ^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$

  • status
    object
    • status.address
      string
      The assigned MAC address.
    • status.conditions
      array of objects
      The latest available observations of an object’s current state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string

        type of condition in CamelCase or in foo.example.com/CamelCase.

        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      integer
      The generation last processed by the controller.
    • status.phase
      string

      Represents the current state of MAC address.

      • Pending - the process of creating is in progress.
      • Bound - the MAC address is bound to MAC address lease.
      • Attached - the MAC address is attached to VirtualMachine.

      Allowed values: Pending, Bound, Attached

    • status.virtualMachineName
      string
      Represents the virtual machine that currently uses this MAC address.

VirtualMachineMACAddressLease

Scope: Cluster
Version: v1alpha2

The resource reserves a MAC address for a virtual machine’s network interface. It prevents multiple allocations for one address in the cluster scope.
  • apiVersion
    string
  • kind
    string
  • metadata
    object
  • spec
    object
    The desired state of VirtualMachineMACAddressLease.
    • spec.virtualMachineMACAddressRef
      object
      The link to existing VirtualMachineMACAddress.
      • spec.virtualMachineMACAddressRef.name
        string

        Required value

        The name of the referenced VirtualMachineMACAddress.
      • spec.virtualMachineMACAddressRef.namespace
        string

        Required value

        The Namespace of the referenced VirtualMachineMACAddress.
  • status
    object
    • status.conditions
      array of objects
      The latest available observations of an object’s current state.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string

        type of condition in CamelCase or in foo.example.com/CamelCase.

        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      integer
      The generation last processed by the controller.
    • status.phase
      string

      Represents the current state of issued MAC address lease.

      • Bound - the MAC address lease is bound to MAC address.

      Allowed values: Bound

VirtualMachineOperation

Scope: Namespaced
Version: v1alpha2

VirtualMachineOperation enables declarative management of virtual machine state changes.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineOperation
metadata:
  generateName: restart-example-vm-
spec:
  type: Restart
  virtualMachineName: example-vm
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.clone
      object
      Clone defines the clone operation.
      • spec.clone.customization
        object
        Customization defines customization options for cloning.
        • spec.clone.customization.namePrefix
          string
          NamePrefix adds a prefix to resource names during cloning. Applied to VirtualMachine, VirtualDisk, VirtualMachineBlockDeviceAttachment, and Secret resources.
        • spec.clone.customization.nameSuffix
          string
          NameSuffix adds a suffix to resource names during cloning. Applied to VirtualMachine, VirtualDisk, VirtualMachineBlockDeviceAttachment, and Secret resources.
      • spec.clone.mode
        string

        Required value

        SnapshotOperationMode defines the kind of the clone operation.

        • DryRun: DryRun run without any changes. Compatibility shows in status.
        • Strict: Strict clone as is in the snapshot.
        • BestEffort: BestEffort process without deleted external missing dependencies.

        Allowed values: DryRun, Strict, BestEffort

      • spec.clone.nameReplacement
        array of objects
        NameReplacement defines rules for renaming resources during cloning.
        • spec.clone.nameReplacement.from
          object
          Selector to choose resources for name replacement.
          • spec.clone.nameReplacement.from.kind
            string
            Kind of a resource to rename.

            Minimal length: 1

          • spec.clone.nameReplacement.from.name
            string

            Required value

            Current name of a resource to rename.

            Minimal length: 1

        • spec.clone.nameReplacement.to
          string
          New resource name.

          Minimal length: 1

    • spec.force
      boolean

      Force execution of an operation.

      • Effect on Restart and Stop: operation performs immediately.
      • Effect on Evict and Migrate: enable the AutoConverge feature to force migration via CPU throttling if the PreferSafe or PreferForced policies are used for live migration.
    • spec.migrate
      object
      Defines the virtual machine migration operation.
      • spec.migrate.nodeSelector
        object

        Node selector for scheduling the VM onto a node. Must match the target node’s labels. Same as the Pod spec.nodeSelector field in Kubernetes.

        The nodeSelector field is not available in the Community Edition.

    • spec.restore
      object
      Restore defines the restore operation.
      • spec.restore.mode
        string

        Required value

        SnapshotOperationMode defines the kind of the clone operation.

        • DryRun: DryRun run without any changes. Compatibility shows in status.
        • Strict: Strict clone as is in the snapshot.
        • BestEffort: BestEffort process without deleted external missing dependencies.

        Allowed values: DryRun, Strict, BestEffort

      • spec.restore.virtualMachineSnapshotName
        string

        Required value

        VirtualMachineSnapshotName defines the source of the restore operation.

        Minimal length: 1

    • spec.type
      string

      Required value

      Type of the operation to execute on a virtual machine:

      • Start: Start the virtual machine.
      • Stop: Stop the virtual machine.
      • Restart: Restart the virtual machine.
      • Migrate: Migrate the virtual machine to another node where it can run.
      • Evict: Evict the virtual machine to another node where it can run.
      • Restore: Restore the virtual machine from a snapshot.
      • Clone: Clone the virtual machine to a new virtual machine.

      Allowed values: Restart, Start, Stop, Migrate, Evict, Restore, Clone

    • spec.virtualMachineName
      string

      Required value

      Name of the virtual machine the operation is performed for.

      Minimal length: 1

  • status
    object
    • status.conditions
      array of objects
      The latest detailed observations of the VirtualMachineOperation resource.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Required value

      Current phase of the resource:

      • Pending: The operation is queued for execution.
      • InProgress: The operation is in progress.
      • Completed: The operation has been completed successfully.
      • Failed: The operation failed. For details, refer to the conditions field and events.
      • Terminating: The operation is being deleted.
      • Superseded: The operation has been superseded by another operation.

      Allowed values: Pending, InProgress, Completed, Failed, Terminating, Superseded

    • status.progress
      string
      Progress reports operation completion percentage for migration-related VMOPs (Evict/Migrate). Example: 33%.
    • status.resources
      array of objects
      Resources contains the list of resources that are affected by the snapshot operation.
      • status.resources.apiVersion
        string
        API version of the resource.
      • status.resources.kind
        string
        Kind of the resource.
      • status.resources.message
        string
        Message about the resource.
      • status.resources.name
        string
        Name of the resource.
      • status.resources.status
        string
        Status of the resource.

        Allowed values: InProgress, Completed, Failed

VirtualMachinePool

Scope: Namespaced
Version: v1alpha2

VirtualMachinePool declaratively manages a group of identical virtual machines: it keeps the requested number of replicas, scales via the standard scale subresource, and reuses “heavy” disks across replica generations.

The resource is available only in paid editions (EE/SE+) and is gated behind the VirtualMachinePool module feature gate.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachinePool
metadata:
  name: example-vms
  namespace: workloads
spec:
  replicas: 3
  scaleDownPolicy: NewestFirst
  virtualDiskTemplates:
  - name: root
    reclaim:
      onScaleDown: Delete
    spec:
      dataSource:
        objectRef:
          kind: VirtualImage
          name: example-image
        type: ObjectRef
      persistentVolumeClaim:
        size: 30Gi
  - name: cache
    reclaim:
      keep: 5.0
      onScaleDown: Retain
      ttl: 30m
    spec:
      persistentVolumeClaim:
        size: 50Gi
  virtualMachineTemplate:
    spec:
      blockDeviceRefs:
      - kind: VirtualDisk
        name: root
      - kind: VirtualDisk
        name: cache
      - kind: ClusterVirtualImage
        name: example-tools-iso
      cpu:
        cores: 2
      memory:
        size: 4Gi
      provisioning:
        type: UserDataRef
        userDataRef:
          kind: Secret
          name: cloudinit-for-vms
      runPolicy: AlwaysOn
      virtualMachineClassName: cpu-host-on-worker-nodes
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object

    VirtualMachinePoolSpec is the desired state of a VirtualMachinePool.

    The disks a replica gets are declared in two places that must stay in sync: virtualDiskTemplates describes each per-replica disk, and the template’s blockDeviceRefs references those disks (by name, kind VirtualDisk) to set the boot order and interleave shared images. The three rules below enforce a bijection between them so neither list can carry a dangling entry.

    Every virtualDiskTemplates entry must be referenced by a VirtualDisk in the template. Every VirtualDisk reference in the template must name a virtualDiskTemplates entry. The reference is one-to-one: no virtualDiskTemplates entry is referenced twice.

    • spec.replicas
      integer

      Replicas is the desired number of virtual machines in the pool.

      The field is written only by its owner — an autoscaler or a human via the scale subresource, or by the addressed scale-down handler. The controller never writes it. Bounds are held by the autoscaler; the hard ceiling is the namespace ResourceQuota.

      Allowed values: 0 <= X

    • spec.scaleDownPolicy
      string

      Required value

      ScaleDownPolicy chooses how a replica is picked when the pool is scaled down anonymously through the scale subresource. It is required and has no default, forcing a conscious choice between “any replica may be killed” and “only addressed removal is allowed”.

      • NewestFirst — anonymous scale-down is allowed; the youngest replicas (least accumulated state) are removed first.
      • OldestFirst — anonymous scale-down is allowed; the oldest replicas are removed first (faster rotation).
      • Explicit — anonymous scale-down through scale is rejected by a webhook; replicas can be removed only by address. For “busy” workloads such as CI runners and VDI.

      Allowed values: NewestFirst, OldestFirst, Explicit

    • spec.virtualDiskTemplates
      array of objects

      Required value

      VirtualDiskTemplates describes each per-replica disk (reclaim policy, size, data source). Names are unique within the pool (list-map key) and every template must be referenced by a VirtualDisk entry in virtualMachineTemplate.spec.blockDeviceRefs, which sets the boot order (see the bijection rule on the spec). A disk with reclaim Delete belongs to its VirtualMachine and is removed with it; a disk with reclaim Retain belongs to the pool, outlives the replica and is reused on a later scale-up.
      • spec.virtualDiskTemplates.name
        string
        Name identifies the disk template within the pool. It is a DNS-1123 label (no dots), because it is embedded into VirtualDisk names.

        Maximum length: 63

        Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

      • spec.virtualDiskTemplates.reclaim
        object
        Reclaim controls what happens to the disk when its replica is removed.
        • spec.virtualDiskTemplates.reclaim.keep
          integer
          Keep is the number of free (Retain) disks always kept warm for fast scale-up; these are immune to the ttl. Only meaningful with Retain.

          Default: 0

          Allowed values: 0 <= X

        • spec.virtualDiskTemplates.reclaim.onScaleDown
          string
          OnScaleDown is Delete (default) or Retain.

          Default: Delete

          Allowed values: Delete, Retain

        • spec.virtualDiskTemplates.reclaim.ttl
          string
          TTL is how long a free disk lives beyond the warm buffer before it is garbage-collected. Only meaningful with Retain.
      • spec.virtualDiskTemplates.spec
        object
        Spec is the desired state of the disk (an ordinary VirtualDiskSpec).
        • spec.virtualDiskTemplates.spec.dataSource
          object
          • spec.virtualDiskTemplates.spec.dataSource.containerImage
            object
            Use an image stored in an external container registry. Only registries with enabled TLS are supported. To provide a custom Certificate Authority (CA) chain, use the caBundle field.
            • spec.virtualDiskTemplates.spec.dataSource.containerImage.caBundle
              string
              CA chain in Base64 format to verify the container registry.

              Example:

              caBundle: YWFhCg==
              
            • spec.virtualDiskTemplates.spec.dataSource.containerImage.image
              string

              Required value

              Path to the image in the container registry.

              Pattern: ^(?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,}))?$

              Example:

              image: registry.example.com/images/slackware:15
              
            • spec.virtualDiskTemplates.spec.dataSource.containerImage.imagePullSecret
              object
              • spec.virtualDiskTemplates.spec.dataSource.containerImage.imagePullSecret.name
                string
                Name of the secret keeping container registry credentials, which must be located in the same namespace.
          • spec.virtualDiskTemplates.spec.dataSource.http
            object

            Fill the image with data from an external URL. The following schemas are supported:

            • HTTP
            • HTTPS

            For HTTPS schema, there is an option to skip the TLS verification.

            • spec.virtualDiskTemplates.spec.dataSource.http.caBundle
              string
              CA chain in Base64 format to verify the URL.

              Example:

              caBundle: YWFhCg==
              
            • spec.virtualDiskTemplates.spec.dataSource.http.checksum
              object
              Checksum to verify integrity and consistency of the downloaded file. The file must match all specified checksums.
              • spec.virtualDiskTemplates.spec.dataSource.http.checksum.md5
                string

                Length: 32..32

                Pattern: ^[0-9a-fA-F]{32}$

                Example:

                md5: f3b59bed9f91e32fac1210184fcff6f5
                
              • spec.virtualDiskTemplates.spec.dataSource.http.checksum.sha256
                string

                Length: 64..64

                Pattern: ^[0-9a-fA-F]{64}$

                Example:

                sha256: 78be890d71dde316c412da2ce8332ba47b9ce7a29d573801d2777e01aa20b9b5
                
            • spec.virtualDiskTemplates.spec.dataSource.http.url
              string

              Required value

              URL of the file for creating an image. The following file formats are supported:

              • qcow2
              • vmdk
              • vdi
              • iso
              • raw The file can be compressed into an archive in one of the following formats:
              • gz
              • xz

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

              Example:

              url: https://mirror.example.com/images/slackware-15.qcow.gz
              
          • spec.virtualDiskTemplates.spec.dataSource.objectRef
            object
            Use an existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource to create a disk.
            • spec.virtualDiskTemplates.spec.dataSource.objectRef.kind
              string

              Required value

              Kind of the existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource.

              Allowed values: ClusterVirtualImage, VirtualImage, VirtualDiskSnapshot

            • spec.virtualDiskTemplates.spec.dataSource.objectRef.name
              string

              Required value

              Name of the existing VirtualImage, ClusterVirtualImage, or VirtualDiskSnapshot resource.

              Minimal length: 1

          • spec.virtualDiskTemplates.spec.dataSource.type
            string

            The following image sources are available for creating an image:

            • HTTP: From a file published on an HTTP/HTTPS service at a given URL.
            • ContainerImage: From another image stored in a container registry.
            • ObjectRef: From an existing resource.
            • Upload: From data uploaded by the user via a special interface.

            Allowed values: HTTP, ContainerImage, ObjectRef, Upload

        • spec.virtualDiskTemplates.spec.persistentVolumeClaim
          object
          Settings for creating PVCs to store the disk.
          • spec.virtualDiskTemplates.spec.persistentVolumeClaim.size
            integer or string

            Desired size for PVC to store the disk. If the disk is created from an image, the size must be at least as large as the original unpacked image.

            This parameter can be omitted if the .spec.dataSource section is filled out. In this case, the controller will determine the disk size automatically, based on the size of the extracted image from the source specified in .spec.dataSource.

            Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

          • spec.virtualDiskTemplates.spec.persistentVolumeClaim.storageClassName
            string

            StorageClass name required by the claim. For details on using StorageClass for PVC, refer to https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1.

            When creating disks, the user can specify the required StorageClass. If not specified, the default StorageClass will be used.

            The disk features and virtual machine behavior depend on the selected StorageClass.

            The VolumeBindingMode parameter in the StorageClass affects the disk creation process. The following values are allowed:

            • Immediate: The disk will be created and becomes available for use immediately after creation.
            • WaitForFirstConsumer: The disk will be created when first used on the node where the virtual machine will be started.

            StorageClass supports multiple storage settings:

            • Creating a block device (Block) or file system (FileSystem).
            • Multiple access (ReadWriteMany) or single access (ReadWriteOnce). The ReadWriteMany disks support multiple access, which enables a “live” migration of virtual machines. In contrast, the ReadWriteOnce disks, which can be accessed from only one node, don’t have this feature.

            For known storage types, Deckhouse automatically determines the most efficient settings when creating disks (by priority, in descending order):

            1. Block + ReadWriteMany
            2. FileSystem + ReadWriteMany
            3. Block + ReadWriteOnce
            4. FileSystem + ReadWriteOnce
    • spec.virtualMachineTemplate
      object

      Required value

      VirtualMachineTemplate is the template every replica is stamped from. Its spec is an ordinary VirtualMachineSpec, so a replica is no different from a manually created virtual machine.
      • spec.virtualMachineTemplate.metadata
        object
        Metadata applied to every replica. Arbitrary user labels and annotations are allowed; the controller adds its managed pool labels on top. A curated struct (not the full ObjectMeta) so the CRD schema exposes labels and annotations instead of an opaque object.
        • spec.virtualMachineTemplate.metadata.annotations
          object
        • spec.virtualMachineTemplate.metadata.labels
          object
      • spec.virtualMachineTemplate.spec
        object
        Spec of the virtual machine that backs each replica.
        • spec.virtualMachineTemplate.spec.affinity
          object

          VMAffinity The same as in the pods spec.affinity parameter in Kubernetes;

          The affinity setting is completely similar to the above documentation, the only difference is in the names of some parameters. In fact, the following analogs are used:

          • podAffinity -> virtualMachineAndPodAffinity
          • podAffinityTerm -> virtualMachineAndPodAffinityTerm
          • spec.virtualMachineTemplate.spec.affinity.nodeAffinity
            object
            Node affinity is a group of node affinity scheduling rules.
            • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
              array of objects
              The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding “weight” to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
              • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference
                object
                A node selector term, associated with the corresponding weight.
                • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions
                  array of objects
                  A list of node selector requirements by node’s labels.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key
                    string
                    The label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
                    string
                    Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
                    array of strings
                    An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
                • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields
                  array of objects
                  A list of node selector requirements by node’s fields.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key
                    string
                    The label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
                    string
                    Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
                    array of strings
                    An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
              • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
                integer
                Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
            • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
              object
              If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
              • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
                array of objects

                Required value

                Required. A list of node selector terms. The terms are ORed.
                • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions
                  array of objects
                  A list of node selector requirements by node’s labels.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key
                    string
                    The label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
                    string
                    Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
                    array of strings
                    An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
                • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields
                  array of objects
                  A list of node selector requirements by node’s fields.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key
                    string
                    The label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
                    string
                    Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                  • spec.virtualMachineTemplate.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
                    array of strings
                    An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
          • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity
            object
            • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution
              array of objects
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
                object
                Required. A vm affinity term, associated with the corresponding weight.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
                  object
                  A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
                    array of objects
                    matchExpressions is a list of label selector requirements. The requirements are ANDed.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
                      string
                      key is the label key that the selector applies to.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
                      string
                      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
                      array of strings
                      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
                    object
                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
                  array of strings
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
                  array of strings
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
                  object
                  A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
                    array of objects
                    matchExpressions is a list of label selector requirements. The requirements are ANDed.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
                      string
                      key is the label key that the selector applies to.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
                      string
                      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
                      array of strings
                      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
                    object
                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
                  array of strings
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
                  string

                  Required value

              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
                integer
                weight associated with matching the corresponding vmAndPodAffinityTerm, in the range 1-100.
            • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution
              array of objects
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
                object
                A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
                  array of objects
                  matchExpressions is a list of label selector requirements. The requirements are ANDed.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
                    string
                    key is the label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
                    string
                    operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
                    array of strings
                    values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
                  object
                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
                array of strings
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
                array of strings
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
                object
                A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
                  array of objects
                  matchExpressions is a list of label selector requirements. The requirements are ANDed.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
                    string
                    key is the label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
                    string
                    operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
                    array of strings
                    values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
                  object
                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
                array of strings
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
                string
          • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity
            object
            • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution
              array of objects
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
                object
                Required. A vm affinity term, associated with the corresponding weight.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
                  object
                  A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
                    array of objects
                    matchExpressions is a list of label selector requirements. The requirements are ANDed.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
                      string
                      key is the label key that the selector applies to.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
                      string
                      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
                      array of strings
                      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
                    object
                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
                  array of strings
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
                  array of strings
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
                  object
                  A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
                    array of objects
                    matchExpressions is a list of label selector requirements. The requirements are ANDed.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
                      string
                      key is the label key that the selector applies to.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
                      string
                      operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                    • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
                      array of strings
                      values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
                    object
                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
                  array of strings
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
                  string

                  Required value

              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
                integer
                weight associated with matching the corresponding vmAndPodAffinityTerm, in the range 1-100.
            • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution
              array of objects
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
                object
                A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
                  array of objects
                  matchExpressions is a list of label selector requirements. The requirements are ANDed.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
                    string
                    key is the label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
                    string
                    operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
                    array of strings
                    values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
                  object
                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
                array of strings
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
                array of strings
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
                object
                A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
                  array of objects
                  matchExpressions is a list of label selector requirements. The requirements are ANDed.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
                    string
                    key is the label key that the selector applies to.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
                    string
                    operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                  • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
                    array of strings
                    values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
                  object
                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
                array of strings
              • spec.virtualMachineTemplate.spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
                string
        • spec.virtualMachineTemplate.spec.blockDeviceRefs
          array of objects

          Required value

          List of block devices that can be mounted by disks belonging to the virtual machine. The order of booting is determined by the order in the list.
          • spec.virtualMachineTemplate.spec.blockDeviceRefs.bootOrder
            integer
            Boot order of the block device. A smaller value means a higher priority. If the parameter is not set for any device, the boot order follows the device position in the list (starting from 1). If the parameter is set for at least one device, the boot order is determined by the specified values.

            Allowed values: 1 <= X

          • spec.virtualMachineTemplate.spec.blockDeviceRefs.kind
            string

            The BlockDeviceKind is a type of the block device. Options are:

            • ClusterVirtualImage — Use ClusterVirtualImage as the disk. This type is always mounted in RO mode. If the image is an iso-image, it will be mounted as a CDROM device.
            • VirtualImage — Use VirtualImage as the disk. This type is always mounted in RO mode. If the image is an iso-image, it will be mounted as a CDROM device.
            • VirtualDisk — Use VirtualDisk as the disk. This type is always mounted in RW mode.

            Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk

          • spec.virtualMachineTemplate.spec.blockDeviceRefs.name
            string
            The name of attached resource.
        • spec.virtualMachineTemplate.spec.bootloader
          string

          The BootloaderType defines bootloader for VM.

          • BIOS - use legacy BIOS.
          • EFI - use Unified Extensible Firmware (EFI/UEFI).
          • EFIWithSecureBoot - use UEFI/EFI with SecureBoot support.

          Default: BIOS

          Allowed values: BIOS, EFI, EFIWithSecureBoot

        • spec.virtualMachineTemplate.spec.cpu
          object

          Required value

          CPUSpec specifies the CPU settings for the VM.
          • spec.virtualMachineTemplate.spec.cpu.coreFraction
            string
            Guaranteed share of CPU that will be allocated to the VM. Specified as a percentage. The range of available values is defined in the VirtualMachineClass sizing policy. If not specified, the default value from the VirtualMachineClass will be used.

            Pattern: ^(100|[1-9][0-9]?|[1-9])%$

          • spec.virtualMachineTemplate.spec.cpu.cores
            integer

            Required value

            Specifies the number of cores inside the VM. The value must be greater or equal 1.

            Allowed values: 1 <= X

        • spec.virtualMachineTemplate.spec.disruptions
          object
          Disruptions describes the policy for applying changes that require rebooting the VM Changes to some VM configuration settings require a reboot of the VM to apply them. This policy allows you to specify the behavior of how the VM will respond to such changes.

          Default: { "restartApprovalMode": "Manual" }

          • spec.virtualMachineTemplate.spec.disruptions.restartApprovalMode
            string
            RestartApprovalMode defines a restart approving mode: Manual or Automatic.

            Allowed values: Manual, Automatic

        • spec.virtualMachineTemplate.spec.enableParavirtualization
          boolean
          Use the virtio bus to connect virtual devices of the VM. Set false to disable virtio for this VM. Note: To use paravirtualization mode, some operating systems require the appropriate drivers to be installed.

          Default: true

        • spec.virtualMachineTemplate.spec.liveMigrationPolicy
          string

          Required value

          Live migration policy type.

          Allowed values: Manual, Never, AlwaysSafe, PreferSafe, AlwaysForced, PreferForced

        • spec.virtualMachineTemplate.spec.memory
          object

          Required value

          MemorySpec specifies the memory settings for the VM.
          • spec.virtualMachineTemplate.spec.memory.size
            integer or string

            Required value

            Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        • spec.virtualMachineTemplate.spec.networks
          array of objects
          • spec.virtualMachineTemplate.spec.networks.id
            integer
          • spec.virtualMachineTemplate.spec.networks.name
            string
          • spec.virtualMachineTemplate.spec.networks.type
            string
          • spec.virtualMachineTemplate.spec.networks.virtualMachineMACAddressName
            string
        • spec.virtualMachineTemplate.spec.nodeSelector
          object
          NodeSelector must match a node’s labels for the VM to be scheduled on that node. The same as in the pods spec.nodeSelector parameter in Kubernetes.
        • spec.virtualMachineTemplate.spec.osType
          string

          The OsType parameter allows you to select the type of used OS, for which a VM with an optimal set of required virtual devices and parameters will be created.

          • Windows - for Microsoft Windows family operating systems.
          • Generic - for other types of OS.

          Default: Generic

          Allowed values: Windows, Generic

        • spec.virtualMachineTemplate.spec.priorityClassName
          string
          PriorityClassName The same as in the pods spec.priorityClassName parameter in Kubernetes.
        • spec.virtualMachineTemplate.spec.provisioning
          object
          Provisioning is a block allows you to configure the provisioning script for the VM.
          • spec.virtualMachineTemplate.spec.provisioning.sysprepRef
            object

            SysprepRef is reference to an existing Windows sysprep automation. Resource structure for the SysprepRef type:

            • .data.autounattend.xml.
            • .data.unattend.xml.
            • spec.virtualMachineTemplate.spec.provisioning.sysprepRef.kind
              string

              The kind of existing Windows sysprep automation resource. The following options are supported:

              • Secret

              Default: Secret

              Allowed values: Secret

            • spec.virtualMachineTemplate.spec.provisioning.sysprepRef.name
              string

              Required value

          • spec.virtualMachineTemplate.spec.provisioning.type
            string

            Required value

            ProvisioningType parameter defines the type of provisioning script:

            Parameters supported for using the provisioning script:

          • spec.virtualMachineTemplate.spec.provisioning.userData
            string
            Inline cloud-init userdata script.
          • spec.virtualMachineTemplate.spec.provisioning.userDataRef
            object

            UserDataRef is reference to an existing resource with a cloud-init script. Resource structure for userDataRef type:

            • .data.userData.
            • spec.virtualMachineTemplate.spec.provisioning.userDataRef.kind
              string

              The kind of existing cloud-init automation resource. The following options are supported:

              • Secret

              Default: Secret

              Allowed values: Secret

            • spec.virtualMachineTemplate.spec.provisioning.userDataRef.name
              string

              Required value

        • spec.virtualMachineTemplate.spec.runPolicy
          string

          RunPolicy parameter defines the VM startup policy

          • AlwaysOn - after creation the VM is always in a running state, even in case of its shutdown by OS means.
          • AlwaysOff - after creation the VM is always in the off state.
          • Manual - after creation the VM is switched off, the VM state (switching on/off) is controlled via sub-resources or OS means.
          • AlwaysOnUnlessStoppedManually - after creation the VM is always in a running state. The VM can be shutdown by means of the OS or use the d8 utility: d8 v stop <vm_name>.

          Default: AlwaysOnUnlessStoppedManually

          Allowed values: AlwaysOn, AlwaysOff, Manual, AlwaysOnUnlessStoppedManually

        • spec.virtualMachineTemplate.spec.terminationGracePeriodSeconds
          integer
          Grace period observed after signalling a VM to stop after which the VM is force terminated.

          Default: 60

        • spec.virtualMachineTemplate.spec.tolerations
          array of objects
          Tolerations define rules to tolerate node taints. The same](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) as in the pods spec.tolerations parameter in Kubernetes.
          • spec.virtualMachineTemplate.spec.tolerations.effect
            string
            Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
          • spec.virtualMachineTemplate.spec.tolerations.key
            string
            Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
          • spec.virtualMachineTemplate.spec.tolerations.operator
            string
            Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
          • spec.virtualMachineTemplate.spec.tolerations.tolerationSeconds
            integer
            TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
          • spec.virtualMachineTemplate.spec.tolerations.value
            string
            Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
        • spec.virtualMachineTemplate.spec.topologySpreadConstraints
          array of objects
          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.labelSelector
            object
            LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
            • spec.virtualMachineTemplate.spec.topologySpreadConstraints.labelSelector.matchExpressions
              array of objects
              matchExpressions is a list of label selector requirements. The requirements are ANDed.
              • spec.virtualMachineTemplate.spec.topologySpreadConstraints.labelSelector.matchExpressions.key
                string
                key is the label key that the selector applies to.
              • spec.virtualMachineTemplate.spec.topologySpreadConstraints.labelSelector.matchExpressions.operator
                string
                operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
              • spec.virtualMachineTemplate.spec.topologySpreadConstraints.labelSelector.matchExpressions.values
                array of strings
                values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
            • spec.virtualMachineTemplate.spec.topologySpreadConstraints.labelSelector.matchLabels
              object
              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.matchLabelKeys
            array of strings

            MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn’t set. Keys that don’t exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.

            This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).

          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.maxSkew
            integer

            MaxSkew describes the degree to which VMs may be unevenly distributed. When whenUnsatisfiable=DoNotSchedule, it is the maximum permitted difference between the number of matching VMs in the target topology and the global minimum. The global minimum is the minimum number of matching VMs in an eligible domain, or zero if the number of eligible domains is less than MinDomains.

            For example, in a 3-zone cluster with MaxSkew set to 1 and VMs with the same labelSelector spread as 2/2/1 across zone1, zone2, and zone3, the global minimum is 1:

            • if MaxSkew is 1, the incoming VM can only be scheduled to zone3 (becoming 2/2/2); scheduling it onto zone1 or zone2 would make the ActualSkew (3-1) violate MaxSkew (1);
            • if MaxSkew is 2, the incoming VM can be scheduled onto any zone.

            When whenUnsatisfiable=ScheduleAnyway, it is used to give higher precedence to topologies that satisfy it. It is a required field. Default value is 1 and 0 is not allowed.

          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.minDomains
            integer

            MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Topology Spread treats the global minimum as 0, and then the skew is calculated. When the number of eligible domains with matching topology keys equals or is greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, the scheduler will not schedule more than maxSkew VMs to those domains. If the value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When the value is not nil, WhenUnsatisfiable must be DoNotSchedule.

            For example, in a 3-zone cluster with MaxSkew set to 2, MinDomains set to 5, and VMs with the same labelSelector spread as 2/2/2 across zone1, zone2, and zone3, the number of domains is less than 5 (MinDomains), so the global minimum is treated as 0. In this situation, a new VM with the same labelSelector cannot be scheduled, because the computed skew would be 3 (3-0) if the new VM is scheduled to any of the three zones, which violates MaxSkew.

          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.nodeAffinityPolicy
            string

            NodeAffinityPolicy indicates how we will treat Pod’s nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are:

            • Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
            • Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.

            If this value is nil, the behavior is equivalent to the Honor policy.

          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.nodeTaintsPolicy
            string

            NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are:

            • Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included.
            • Ignore: node taints are ignored. All nodes are included.

            If this value is nil, the behavior is equivalent to the Ignore policy.

          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.topologyKey
            string
            TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a “bucket”, and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is “kubernetes.io/hostname”, each Node is a domain of that topology. And, if TopologyKey is “topology.kubernetes.io/zone”, each zone is a domain of that topology. It’s a required field.
          • spec.virtualMachineTemplate.spec.topologySpreadConstraints.whenUnsatisfiable
            string

            WhenUnsatisfiable indicates how to deal with a VM if it does not satisfy the spread constraint.

            • DoNotSchedule (default) tells the scheduler not to schedule it.
            • ScheduleAnyway tells the scheduler to schedule the VM in any location, but giving higher precedence to topologies that would help reduce the skew.

            A constraint is considered Unsatisfiable for an incoming VM if and only if every possible node assignment for that VM would violate MaxSkew on some topology. For example, in a 3-zone cluster with MaxSkew set to 1 and VMs with the same labelSelector spread as 3/1/1 across zone1, zone2, and zone3, if WhenUnsatisfiable is DoNotSchedule, the incoming VM can only be scheduled to zone2 or zone3 (becoming 3/2/1 or 3/1/2), because ActualSkew (2-1) on zone2 or zone3 satisfies MaxSkew (1). In other words, the cluster can still be imbalanced, but the scheduler will not make it more imbalanced. It is a required field.

        • spec.virtualMachineTemplate.spec.usbDevices
          array of objects
          List of USB devices to attach to the virtual machine. Devices are referenced by name of USBDevice resource in the same namespace.
          • spec.virtualMachineTemplate.spec.usbDevices.name
            string
            The name of USBDevice resource in the same namespace.
        • spec.virtualMachineTemplate.spec.virtualMachineClassName
          string

          Required value

          Name of the VirtualMachineClass resource describing the requirements for a virtual CPU, memory and the resource allocation policy and node placement policies for virtual machines.
        • spec.virtualMachineTemplate.spec.virtualMachineIPAddressName
          string
          Name for the associated virtualMachineIPAddress resource. Specified when it is necessary to use a previously created IP address of the VM. If not explicitly specified, by default a virtualMachineIPAddress resource is created for the VM with a name similar to the VM resource (.metadata.name).
  • status
    object
    VirtualMachinePoolStatus is the observed state of a VirtualMachinePool.
    • status.conditions
      array of objects
      Conditions describe the current state of the pool.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.desiredTemplateHash
      string
      DesiredTemplateHash is the hash of the current virtualMachineTemplate — the revision the controller is converging replicas to (cf. updateRevision on a StatefulSet).
    • status.observedGeneration
      integer
      ObservedGeneration is the generation of the spec the controller has processed.
    • status.readyReplicas
      integer
      ReadyReplicas is the number of members ready to serve (Terminating excluded).
    • status.replicas
      integer
      Replicas is the number of existing members, including those in Terminating: such a machine still occupies resources, so it is real capacity, not a phantom.
    • status.restartPendingReplicas
      integer
      RestartPendingReplicas is the number of replicas patched to the new template whose disruptive part still awaits a restart.
    • status.selector
      string
      Selector is the label selector the controller publishes for the scale subresource; HPA/KEDA read it themselves.
    • status.updatedReplicas
      integer
      UpdatedReplicas is the number of replicas effectively on DesiredTemplateHash (fully synced).

VirtualMachine

Scope: Namespaced
Version: v1alpha2

Describes the configuration and status of a virtual machine (VM). On a running VM, changed parameters can only be applied after rebooting, except for the following parameters that are applied on the fly:

  • .metadata.labels
  • .metadata.annotations
  • .spec.disruptions.restartApprovalMode
  • .spec.runPolicy.

Note: The metadata.name field must comply with Kubernetes object naming conventions and must not exceed 63 characters.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachine
metadata:
  name: example-vm
spec:
  blockDeviceRefs:
  - kind: VirtualDisk
    name: example-disk
  cpu:
    coreFraction: 10%
    cores: 1
  memory:
    size: 1Gi
  provisioning:
    type: UserDataRef
    userDataRef:
      kind: Secret
      name: cloudinit-for-vms
  virtualMachineClassName: cpu-host-on-worker-nodes
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.affinity
      object

      The same as in the pod parameter spec.affinity in Kubernetes;

      The affinity setting details are exactly matching the documentation source above. The only difference are the names of several parameters. The following alternative names are used:

      • podAffinity -> virtualMachineAndPodAffinity
      • podAffinityTerm -> virtualMachineAndPodAffinityTerm
      • spec.affinity.nodeAffinity
        object
        Describes node affinity scheduling rules for a VM.
        • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
          array of objects
          • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference
            object
            • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions
              array of objects
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key
                string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
                string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
                array of strings
                • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values.Element of the array
                  string
            • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields
              array of objects
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key
                string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
                string
              • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
                array of strings
                • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values.Element of the array
                  string
          • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
            integer

            Allowed values: 1 <= X <= 100

        • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
          object
          • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
            array of objects

            Required value

            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions
              array of objects
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key
                string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
                string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
                array of strings
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values.Element of the array
                  string
            • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields
              array of objects
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key
                string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
                string
              • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
                array of strings
                • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values.Element of the array
                  string
      • spec.affinity.virtualMachineAndPodAffinity
        object
        Describes pod and VM affinity scheduling rules.
        • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution
          array of objects
          • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
            object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
              object
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
                array of objects
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
                  string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
                  string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
                  array of strings
                  • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values.Element of the array
                    string
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
                object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
              object
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
                array of objects
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
                  string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
                  string
                • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
                  array of strings
                  • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values.Element of the array
                    string
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
                object
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
              array of strings
              • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
              string

              Required value

          • spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
            integer

            Allowed values: 1 <= X <= 100

        • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution
          array of objects
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
            object
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
              array of objects
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
                string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
                string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
                array of strings
                • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values.Element of the array
                  string
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
              object
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
            object
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
              array of objects
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
                string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
                string
              • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
                array of strings
                • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values.Element of the array
                  string
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
              object
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
            array of strings
            • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
            string
      • spec.affinity.virtualMachineAndPodAntiAffinity
        object
        Describes pod and VM anti-affinity scheduling rules.
        • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution
          array of objects
          • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
            object
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
              object
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
                array of objects
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
                  string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
                  string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
                  array of strings
                  • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values.Element of the array
                    string
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
                object
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
              array of strings
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
              object
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
                array of objects
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
                  string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
                  string
                • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
                  array of strings
                  • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values.Element of the array
                    string
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
                object
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
              array of strings
              • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces.Element of the array
                string
            • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
              string

              Required value

          • spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
            integer

            Allowed values: 1 <= X <= 100

        • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution
          array of objects
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
            object
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
              array of objects
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
                string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
                string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
                array of strings
                • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values.Element of the array
                  string
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
              object
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
            array of strings
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
            object
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
              array of objects
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
                string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
                string
              • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
                array of strings
                • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values.Element of the array
                  string
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
              object
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
            array of strings
            • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces.Element of the array
              string
          • spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
            string
    • spec.blockDeviceRefs
      array of objects

      Required value

      List of block devices connected to the VM.
      • spec.blockDeviceRefs.bootOrder
        integer
        Boot order of the block device. A smaller value means a higher priority. If the parameter is not set for any device, the boot order follows the device position in the list (starting from 1). If the parameter is set for at least one device, the boot order is determined by the specified values.

        Allowed values: 1 <= X

      • spec.blockDeviceRefs.kind
        string

        Supported block device types:

        • ClusterVirtualImage: Use ClusterVirtualImage as the disk. This type is always mounted in ReadOnly mode. An ISO image will be mounted as a CD-ROM device.
        • VirtualImage: Use VirtualImage as the disk. This type is always mounted in ReadOnly mode. An ISO image will be mounted as a CD-ROM device.
        • VirtualDisk: Use VirtualDisk as the disk. This type is always mounted in ReadWrite mode.

        Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk

      • spec.blockDeviceRefs.name
        string
        Name of the attached resource.

        Minimal length: 1

    • spec.bootloader
      string

      Defines a bootloader for a VM.

      • BIOS: Use BIOS.
      • EFI: Use Unified Extensible Firmware (EFI/UEFI).
      • EFIWithSecureBoot: Use UEFI/EFI with the Secure Boot support.

      Default: BIOS

      Allowed values: BIOS, EFI, EFIWithSecureBoot

    • spec.cpu
      object

      Required value

      Section describing the CPU settings for a VM.
      • spec.cpu.coreFraction
        string
        Guaranteed share of CPU time allocated to the VM. Specified as a percentage. The allowed range is defined by sizePolicy in the selected VirtualMachineClass. If sizePolicy is not set, use values in the 1–100% range. If the parameter is not specified, the default value from the class sizePolicy is used. If no default is set in the class, 100% is applied.

        Pattern: ^(100|[1-9][0-9]?|[1-9])%$

      • spec.cpu.cores
        integer

        Required value

        Number of cores.

        Allowed values: 1 <= X

    • spec.disruptions
      object

      Describes the policy for applying changes that require rebooting the VM.

      Changes to some VM configuration settings require a VM reboot to be applied. This policy lets you specify the behavior defining how the VM reacts to such changes.

      Default: { "restartApprovalMode": "Manual" }

      • spec.disruptions.restartApprovalMode
        string

        Approval mode for changes that require rebooting the VM:

        • Manual: Changes won’t be applied until the user manually reboots the VM.
        • Automatic: The VM will be rebooted immediately after the parameters requiring the reboot are saved.

        Allowed values: Manual, Automatic

    • spec.enableParavirtualization
      boolean

      Use the virtio bus for connecting virtual devices of a VM. To disable virtio for a VM, set this parameter to False.

      Note: To use the paravirtualization mode, some operating systems require installing the corresponding drivers.

      Note: When set to false, hot-plugging block devices via .spec.blockDeviceRefs is not supported. Changes to block devices require a VM restart. Hot-plugging via VirtualMachineBlockDeviceAttachment is still supported.

      Default: true

    • spec.liveMigrationPolicy
      string

      Defines policy for live migration process:

      • AlwaysSafe — use Safe options for automatic and VMOP migrations. Do not enable CPU throttling.
      • PreferSafe — use Safe options for automatic migrations. CPU throttling can be enabled with force=true in VMOP.
      • AlwaysForced — enable CPU throttling for automatic and VMOP migrations. No way to disable CPU throttling.
      • PreferForced — enable CPU throttling for automatic migrations. CPU throttling can be disabled with force=false in VMOP.

      Default: PreferSafe

      Allowed values: AlwaysSafe, PreferSafe, AlwaysForced, PreferForced

    • spec.memory
      object

      Required value

      Section specifying the RAM settings for the VM.
      • spec.memory.size
        string

        Required value

        RAM amount.

        Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • spec.networks
      array of objects

      List of network interface configurations. If not specified, the VM uses only the main cluster network (Main).

      The sdn module is required only when additional networks (Network or ClusterNetwork) are specified in .spec.networks. If only the main network (Main) is specified, the module is not required.

      • spec.networks.id
        integer
        The ID of the network interface.
      • spec.networks.name
        string
        The name of the network interface.

        Minimal length: 1

      • spec.networks.type
        string

        The type of the network interface.

        Supported types:

        • Main — primary network interface that is always present (default network).
        • Network — a subnet at the namespace level.
        • ClusterNetwork — a subnet at the cluster level.

        Allowed values: Main, Network, ClusterNetwork

      • spec.networks.virtualMachineMACAddressName
        string
        The name of the VirtualMachineMACAddress resource that is associated with the network interface.

        Minimal length: 1

    • spec.nodeSelector
      object
      The same as in the pod parameter spec.nodeSelector in Kubernetes.
    • spec.osType
      string

      Lets you select the type of a used OS that will be used to create a VM with an optimal set of required virtual devices and parameters.

      • Windows: For an operating system from the Microsoft Windows family.
      • Generic: For other operating systems.

      Default: Generic

      Allowed values: Windows, Generic

    • spec.priorityClassName
      string
      The same as in the pod parameter spec.priorityClassName in Kubernetes.

      Minimal length: 1

    • spec.provisioning
      object
      Section describing a VM initial provisioning scenario.
      • spec.provisioning.sysprepRef
        object

        Link to an existing resource with the Windows automation scenario.

        A resource structure for the SysprepRef type:

        • .data.autounattend.xml
        • .data.unattend.xml
        • spec.provisioning.sysprepRef.kind
          string

          Required value

          Kind of the resource. Use a secret of the following type: provisioning.virtualization.deckhouse.io/sysprep.

          Default: Secret

          Allowed values: Secret

        • spec.provisioning.sysprepRef.name
          string

          Required value

          Secret name.

          Minimal length: 1

      • spec.provisioning.type
        string

        Required value

        Supported parameters for using the provisioning scenario:

        • UserData: Use the cloud-init scenario in the .spec.provisioning.UserData section.
        • UserDataRef: Use the cloud-init scenario located in a different resource.
        • SysprepRef: Use the automatic Windows installation scenario located in a different resource.

        Allowed values: UserData, UserDataRef, SysprepRef

      • spec.provisioning.userData
        string
      • spec.provisioning.userDataRef
        object

        Link to an existing resource with the cloud-init scenario.

        A resource structure for the userDataRef type:

        • .data.userData.
        • spec.provisioning.userDataRef.kind
          string

          Required value

          Kind of the resource.

          Default: Secret

          Allowed values: Secret

        • spec.provisioning.userDataRef.name
          string

          Required value

          Name of the resource with the cloud-init scenario.

          Minimal length: 1

    • spec.runPolicy
      string

      Defines the VM startup policy:

      • AlwaysOn: Once created, the VM is always in a running state, even if shut down by the OS.
      • AlwaysOff: Once created, the VM is always in a powered-off state.
      • Manual: Once created, the VM is switched off. Switching on and off is controlled via API services or the OS.
      • AlwaysOnUnlessStoppedManually: Once created, the VM is always in a running state. It can be switched off by the OS or using the following command for the d8 utility: d8 v stop <vm_name>.

      Default: AlwaysOnUnlessStoppedManually

      Allowed values: AlwaysOn, AlwaysOff, Manual, AlwaysOnUnlessStoppedManually

    • spec.terminationGracePeriodSeconds
      integer
      Grace period after sending a SIGTERM signal to shut down a VM. Once the grace period expires, the VM is forcibly terminated.

      Default: 60

    • spec.tolerations
      array of objects
      The same as in the pod parameter spec.tolerations in Kubernetes.
      • spec.tolerations.effect
        string
      • spec.tolerations.key
        string
      • spec.tolerations.operator
        string
      • spec.tolerations.tolerationSeconds
        integer
      • spec.tolerations.value
        string
    • spec.topologySpreadConstraints
      array of objects
      The same as in the pod parameter spec.topologySpreadConstraints in Kubernetes.
      • spec.topologySpreadConstraints.labelSelector
        object
        • spec.topologySpreadConstraints.labelSelector.matchExpressions
          array of objects
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.key
            string
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.operator
            string
          • spec.topologySpreadConstraints.labelSelector.matchExpressions.values
            array of strings
            • spec.topologySpreadConstraints.labelSelector.matchExpressions.values.Element of the array
              string
        • spec.topologySpreadConstraints.labelSelector.matchLabels
          object
      • spec.topologySpreadConstraints.maxSkew
        integer
      • spec.topologySpreadConstraints.topologyKey
        string
      • spec.topologySpreadConstraints.whenUnsatisfiable
        string
    • spec.usbDevices
      array of objects
      List of USB devices to attach to the virtual machine. Devices are referenced by name of USBDevice resource in the same namespace.
      • spec.usbDevices.name
        string
        The name of USBDevice resource in the same namespace.

        Minimal length: 1

    • spec.virtualMachineClassName
      string

      Required value

      Name of the VirtualMachineClass resource describing the requirements for a virtual CPU, memory, and the resource allocation policy.

      Minimal length: 1

    • spec.virtualMachineIPAddressName
      string

      Name for the associated virtualMachineIPAddress resource.

      Specified when it is necessary to use a previously created IP address of a VM.

      If not explicitly specified, by default a virtualMachineIPAddress resource is created with a name similar to the VM resource (.metadata.name).

      Minimal length: 1

  • status
    object
    • status.blockDeviceRefs
      array of objects
      List of block devices attached to the VM.
      • status.blockDeviceRefs.attached
        boolean
        Block device is attached to the virtual machine.
      • status.blockDeviceRefs.bootOrder
        integer
        Boot order of the block device. A smaller value means a higher priority.
      • status.blockDeviceRefs.hotplugged
        boolean
        Block device is attached via a hot-plug connection.
      • status.blockDeviceRefs.kind
        string
        Block device type.

        Allowed values: ClusterVirtualImage, VirtualImage, VirtualDisk

      • status.blockDeviceRefs.name
        string
        Name of the existing resource.
      • status.blockDeviceRefs.size
        string
        Size of the attached block device.
      • status.blockDeviceRefs.target
        string
        Name of the attached block device.

        Example:

        target: sda
        
      • status.blockDeviceRefs.virtualMachineBlockDeviceAttachmentName
        string
        Name of the VirtualMachineBlockDeviceAttachment resource that defines the hot-plug disk connection to the VM.
    • status.conditions
      array of objects
      State of the running virtual machine.
      • status.conditions.lastTransitionTime
        string
        Last time the condition transitioned from one status to another.
      • status.conditions.message
        string
        Human-readable message with details about the last transition.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        .metadata.generation the condition was based upon. For instance, if .metadata.generation is currently 12 but .status.conditions[x].observedGeneration is 9, the condition is considered outdated.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        Brief reason for the condition’s last transition.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        Condition status. Possible values: True, False, or Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        Condition type.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.guestOSInfo
      object

      Guest OS information obtained from the QEMU Guest Agent. The agent must installed in advance.

      More about the agent: https://www.qemu.org/docs/master/interop/qemu-ga.html.

    • status.ipAddress
      string
      IP address of the VM.
    • status.migrationState
      object
      Details on the VM migration.
      • status.migrationState.endTimestamp
        string
        Time when the migration ends.
      • status.migrationState.result
        string
        Migration result: Succeeded or Failed.

        Allowed values: ‘’, Succeeded, Failed

      • status.migrationState.source
        object
        • status.migrationState.source.node
          string
          Name of the node where the VM is currently running.
        • status.migrationState.source.pod
          string
          Name of the pod where the VM is currently running.
      • status.migrationState.startTimestamp
        string
        Time when the migration starts.
      • status.migrationState.target
        object
        • status.migrationState.target.node
          string
          Name of the node where the VM is currently migrating to.
        • status.migrationState.target.pod
          string
          Name of the module where the VM is currently migrating to."
    • status.networks
      array of objects
      List of network interfaces attached to the VM.
      • status.networks.id
        integer
        The ID of the network interface.
      • status.networks.macAddress
        string
        The MAC address of the network interface.
      • status.networks.name
        string
        The name of the network interface.
      • status.networks.type
        string
        The type of the network interface.
      • status.networks.virtualMachineMACAddressName
        string
        The name of the VirtualMachineMACAddress resource that is associated with the network interface.
    • status.nodeName
      string
      Name of the node where the VM is currently running.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      The current phase of a virtual machine:

      • Scheduling: The VM has been scheduled for provisioning on cluster nodes.
      • Pending: The VM startup is in progress.
      • Running: The VM is running.
      • Degraded: An error occurred during the VM startup or while it was running.
      • Terminating: The VM is currently shutting down.
      • Stopped: The VM is stopped.

      Allowed values: Pending, Running, Degraded, Terminating, Stopped, Stopping, Starting, Migrating, Pause

    • status.resources
      object
      Statistics on used resources.
      • status.resources.cpu
        object
        Statistics on used CPU resources.
        • status.resources.cpu.coreFraction
          string
          Current value of coreFraction.
        • status.resources.cpu.cores
          integer

          Required value

          Current number of the VM cores.
        • status.resources.cpu.requestedCores
          integer or string
          Requested cores.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        • status.resources.cpu.runtimeOverhead
          integer or string
          CPU overhead required by the runtime.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        • status.resources.cpu.topology
          object
          Information on the current CPU topology.
          • status.resources.cpu.topology.coresPerSocket
            integer

            Required value

            Current number of CPU cores per socket.
          • status.resources.cpu.topology.sockets
            integer

            Required value

            Current number of CPU sockets.
      • status.resources.memory
        object
        Memory usage statistics.
        • status.resources.memory.runtimeOverhead
          integer or string
          Memory overhead required by the runtime.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

        • status.resources.memory.size
          integer or string

          Required value

          Current size of the VM memory.

          Pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • status.restartAwaitingChanges
      array of objects
      List of configuration changes that require a VM reboot to be applied.
    • status.stats
      object
      Virtual machine statistics.
      • status.stats.lastStartTime
        string
        Time when the virtual machine last started running.
      • status.stats.launchTimeDuration
        object
        Details on the launch.
        • status.stats.launchTimeDuration.guestOSAgentStarting
          string
          Waiting time for the guestOsAgent to start. running -> running with guestOSAgent.
        • status.stats.launchTimeDuration.virtualMachineStarting
          string
          Waiting time for the virtual machine to start. starting -> running.
        • status.stats.launchTimeDuration.waitingForDependencies
          string
          Waiting time for dependent resources. pending -> starting.
      • status.stats.phasesTransitions
        array of objects
        Phase history.
        • status.stats.phasesTransitions.phase
          string
          Virtual machine phase.

          Allowed values: Pending, Running, Degraded, Terminating, Stopped, Stopping, Starting, Migrating, Pause

        • status.stats.phasesTransitions.timestamp
          string
          Time of transition to this phase.
    • status.usbDevices
      array of objects
      List of USB devices attached to the virtual machine.
      • status.usbDevices.address
        object
        USB address inside the virtual machine.
        • status.usbDevices.address.bus
          integer
          USB bus number (always 0 for the main USB controller).
        • status.usbDevices.address.port
          integer
          USB port number on the selected bus.
      • status.usbDevices.attached
        boolean
        The USB device is attached to the virtual machine.
      • status.usbDevices.hotplugged
        boolean
        USB device is attached via hot plug connection.
      • status.usbDevices.name
        string
        The name of USBDevice resource.
      • status.usbDevices.ready
        boolean
        USB device is ready to use.
    • status.versions
      object
      Hypervisor versions.
      • status.versions.libvirt
        string
        Libvirt version.
      • status.versions.qemu
        string
        Qemu version.
    • status.virtualMachineIPAddressName
      string
      Name of the VirtualMachineIPAddressName resource with an IP address of the VM.
    • status.virtualMachinePods
      array of objects
      List of virtual machine pods.
      • status.virtualMachinePods.active
        boolean
        Current working pod.
      • status.virtualMachinePods.name
        string
        Pod name.

VirtualMachineSnapshotOperation

Scope: Namespaced
Version: v1alpha2

VirtualMachineSnapshotOperation enables declarative management of virtual machine snapshot state changes.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineSnapshotOperation
metadata:
  name: clone-example-vm-from-snapshot
spec:
  createVirtualMachine:
    mode: Strict
    nameReplacement:
    - from:
        kind: VirtualMachine
        name: example-vm
      to: example-vm-clone
    - from:
        kind: VirtualDisk
        name: example-disk
      to: example-vm-clone-root
  type: CreateVirtualMachine
  virtualMachineSnapshotName: example-vm-snapshot
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.createVirtualMachine
      object
      CreateVirtualMachine defines the clone operation.
      • spec.createVirtualMachine.customization
        object
        Customization defines customization options for cloning.
        • spec.createVirtualMachine.customization.namePrefix
          string
          NamePrefix adds a prefix to resource names during cloning. Applied to VirtualMachine, VirtualDisk, VirtualMachineBlockDeviceAttachment, and Secret resources.
        • spec.createVirtualMachine.customization.nameSuffix
          string
          NameSuffix adds a suffix to resource names during cloning. Applied to VirtualMachine, VirtualDisk, VirtualMachineBlockDeviceAttachment, and Secret resources.
      • spec.createVirtualMachine.mode
        string

        Required value

        SnapshotOperationMode defines the kind of the clone operation.

        • DryRun: DryRun run without any changes. Compatibility shows in status.
        • Strict: Strict clone as is in the snapshot.
        • BestEffort: BestEffort process without deleted external missing dependencies.

        Allowed values: DryRun, Strict, BestEffort

      • spec.createVirtualMachine.nameReplacement
        array of objects
        NameReplacement defines rules for renaming resources during cloning.
        • spec.createVirtualMachine.nameReplacement.from
          object
          Selector to choose resources for name replacement.
          • spec.createVirtualMachine.nameReplacement.from.kind
            string
            Kind of a resource to rename.

            Minimal length: 1

          • spec.createVirtualMachine.nameReplacement.from.name
            string

            Required value

            Current name of a resource to rename.

            Minimal length: 1

        • spec.createVirtualMachine.nameReplacement.to
          string
          New resource name.

          Minimal length: 1

    • spec.type
      string

      Required value

      Type of the operation to execute on a virtual machine:

      • CreateVirtualMachine: CreateVirtualMachine the virtual machine to a new virtual machine.

      Allowed values: CreateVirtualMachine

    • spec.virtualMachineSnapshotName
      string

      Required value

      Name of the virtual machine snapshot the operation is performed for.

      Minimal length: 1

  • status
    object
    • status.conditions
      array of objects
      The latest detailed observations of the VirtualMachineSnapshotOperation resource.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Required value

      Current phase of the resource:

      • Pending: The operation is queued for execution.
      • InProgress: The operation is in progress.
      • Completed: The operation has been completed successfully.
      • Failed: The operation failed. For details, refer to the conditions field and events.
      • Terminating: The operation is being deleted.

      Allowed values: Pending, InProgress, Completed, Failed, Terminating

    • status.resources
      array of objects
      Resources contains the list of resources that are affected by the snapshot operation.
      • status.resources.apiVersion
        string
        API version of the resource.
      • status.resources.kind
        string
        Kind of the resource.
      • status.resources.message
        string
        Message about the resource.
      • status.resources.name
        string
        Name of the resource.
      • status.resources.status
        string
        Status of the resource.

        Allowed values: InProgress, Completed, Failed

VirtualMachineSnapshot

Scope: Namespaced
Version: v1alpha2

VirtualMachineSnapshot provides a resource for creating snapshots of virtual machines.

Example:


apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineSnapshot
metadata:
  name: example-vm-snapshot
spec:
  keepIPAddress: Never
  requiredConsistency: true
  virtualMachineName: example-vm
  • apiVersion
    string
    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
    string
    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
    object
  • spec
    object
    • spec.keepIPAddress
      string

      Required value

      KeepIPAddress defines whether to keep the IP address of a virtual machine or not:

      • Always: When creating a snapshot, the virtual machine’s IP address will be converted from Auto to Static and saved.
      • Never: When creating a snapshot, the virtual machine’s IP address will not be converted.

      Default: Always

      Allowed values: Always, Never

    • spec.requiredConsistency
      boolean

      Required value

      Create a snapshot of a virtual machine only if it is possible to freeze the machine through the agent.

      If set to true, the virtual machine snapshot will be created only in the following cases:

      • When the virtual machine is powered off.
      • When the virtual machine has an agent, and the freeze operation was successful.

      Default: true

    • spec.virtualMachineName
      string

      Required value

      Name of the virtual machine to take a snapshot of.

      Minimal length: 1

  • status
    object
    • status.conditions
      array of objects
      The latest detailed observations of the VirtualMachineSnapshot resource.
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.consistent
      boolean
      Whether a virtual machine snapshot is consistent.
    • status.observedGeneration
      integer
      Resource generation last processed by the controller.
    • status.phase
      string

      Required value

      VirtualMachineSnapshotPhase defines the current status of a resource:

      • Pending: The resource has been created and is on a waiting queue.
      • InProgress: A virtual machine snapshot is being created.
      • Ready: A snapshot has been created successfully, and now it’s available to use.
      • Failed: An error occurred when creating a virtual machine snapshot.
      • Terminating: The resource is being deleted.

      Allowed values: Pending, InProgress, Ready, Failed, Terminating

    • status.resources
      array of objects
      List of snapshot resources.
      • status.resources.apiVersion
        string
        API version of the resource.
      • status.resources.kind
        string
        Kind of the resource.
      • status.resources.name
        string
        Name of the resource.
    • status.virtualDiskSnapshotNames
      array of strings
      List of VirtualDiskSnapshot names for the snapshots taken from the virtual disks of the associated virtual machine.
    • status.virtualMachineSnapshotSecretName
      string
      Name of the underlying Secret created for virtual machine snapshotting.