apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: kubevirt.io/generation: "1" kubevirt.io/install-strategy-identifier: c51bc47ef3eccba54f764552d24801eb8388b36e kubevirt.io/install-strategy-registry: quay.io/kubevirt kubevirt.io/install-strategy-version: v1.0.1 generation: 1 labels: app.kubernetes.io/component: kubevirt app.kubernetes.io/managed-by: virt-operator kubevirt.io: "" name: virtualmachineinstancemigrations.kubevirt.io spec: conversion: strategy: None group: kubevirt.io names: categories: - all kind: VirtualMachineInstanceMigration listKind: VirtualMachineInstanceMigrationList plural: virtualmachineinstancemigrations shortNames: - vmim - vmims singular: virtualmachineinstancemigration scope: Namespaced versions: - additionalPrinterColumns: - description: The current phase of VM instance migration jsonPath: .status.phase name: Phase type: string - description: The name of the VMI to perform the migration on jsonPath: .spec.vmiName name: VMI type: string name: v1 schema: openAPIV3Schema: description: VirtualMachineInstanceMigration represents the object tracking a VMI's migration to another host in the cluster properties: apiVersion: description: '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' type: string kind: description: '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' type: string metadata: type: object spec: properties: vmiName: description: The name of the VMI to perform the migration on. VMI must exist in the migration objects namespace type: string type: object status: description: VirtualMachineInstanceMigration reprents information pertaining to a VMI's migration. properties: conditions: items: properties: lastProbeTime: format: date-time nullable: true type: string lastTransitionTime: format: date-time nullable: true type: string message: type: string reason: type: string status: type: string type: type: string required: - status - type type: object type: array migrationState: description: Represents the status of a live migration properties: abortRequested: description: Indicates that the migration has been requested to abort type: boolean abortStatus: description: Indicates the final status of the live migration abortion type: string completed: description: Indicates the migration completed type: boolean endTimestamp: description: The time the migration action ended format: date-time nullable: true type: string failed: description: Indicates that the migration failed type: boolean migrationConfiguration: description: Migration configurations to apply properties: allowAutoConverge: description: AllowAutoConverge allows the platform to compromise performance/availability of VMIs to guarantee successful VMI live migrations. Defaults to false type: boolean allowPostCopy: description: AllowPostCopy enables post-copy live migrations. Such migrations allow even the busiest VMIs to successfully live-migrate. However, events like a network failure can cause a VMI crash. If set to true, migrations will still start in pre-copy, but switch to post-copy when CompletionTimeoutPerGiB triggers. Defaults to false type: boolean bandwidthPerMigration: anyOf: - type: integer - type: string description: BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use. The value is in quantity per second. Defaults to 0 (no limit) pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true completionTimeoutPerGiB: description: CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take. If a live-migration takes longer to migrate than this value multiplied by the size of the VMI, the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800 format: int64 type: integer disableTLS: description: When set to true, DisableTLS will disable the additional layer of live migration encryption provided by KubeVirt. This is usually a bad idea. Defaults to false type: boolean matchSELinuxLevelOnMigration: description: By default, the SELinux level of target virt-launcher pods is forced to the level of the source virt-launcher. When set to true, MatchSELinuxLevelOnMigration lets the CRI auto-assign a random level to the target. That will ensure the target virt-launcher doesn't share categories with another pod on the node. However, migrations will fail when using RWX volumes that don't automatically deal with SELinux levels. type: boolean network: description: Network is the name of the CNI network to use for live migrations. By default, migrations go through the pod network. type: string nodeDrainTaintKey: description: 'NodeDrainTaintKey defines the taint key that indicates a node should be drained. Note: this option relies on the deprecated node taint feature. Default: kubevirt.io/drain' type: string parallelMigrationsPerCluster: description: ParallelMigrationsPerCluster is the total number of concurrent live migrations allowed cluster-wide. Defaults to 5 format: int32 type: integer parallelOutboundMigrationsPerNode: description: ParallelOutboundMigrationsPerNode is the maximum number of concurrent outgoing live migrations allowed per node. Defaults to 2 format: int32 type: integer progressTimeout: description: ProgressTimeout is the maximum number of seconds a live migration is allowed to make no progress. Hitting this timeout means a migration transferred 0 data for that many seconds. The migration is then considered stuck and therefore cancelled. Defaults to 150 format: int64 type: integer unsafeMigrationOverride: description: UnsafeMigrationOverride allows live migrations to occur even if the compatibility check indicates the migration will be unsafe to the guest. Defaults to false type: boolean type: object migrationPolicyName: description: Name of the migration policy. If string is empty, no policy is matched type: string migrationUid: description: The VirtualMachineInstanceMigration object associated with this migration type: string mode: description: Lets us know if the vmi is currently running pre or post copy migration type: string sourceNode: description: The source node that the VMI originated on type: string startTimestamp: description: The time the migration action began format: date-time nullable: true type: string targetAttachmentPodUID: description: The UID of the target attachment pod for hotplug volumes type: string targetCPUSet: description: If the VMI requires dedicated CPUs, this field will hold the dedicated CPU set on the target node items: type: integer type: array x-kubernetes-list-type: atomic targetDirectMigrationNodePorts: additionalProperties: type: integer description: The list of ports opened for live migration on the destination node type: object targetNode: description: The target node that the VMI is moving to type: string targetNodeAddress: description: The address of the target node to use for the migration type: string targetNodeDomainDetected: description: The Target Node has seen the Domain Start Event type: boolean targetNodeDomainReadyTimestamp: description: The timestamp at which the target node detects the domain is active format: date-time type: string targetNodeTopology: description: If the VMI requires dedicated CPUs, this field will hold the numa topology on the target node type: string targetPod: description: The target pod that the VMI is moving to type: string type: object phase: description: VirtualMachineInstanceMigrationPhase is a label for the condition of a VirtualMachineInstanceMigration at the current time. type: string phaseTransitionTimestamps: description: PhaseTransitionTimestamp is the timestamp of when the last phase change occurred items: description: VirtualMachineInstanceMigrationPhaseTransitionTimestamp gives a timestamp in relation to when a phase is set on a vmi properties: phase: description: Phase is the status of the VirtualMachineInstanceMigrationPhase in kubernetes world. It is not the VirtualMachineInstanceMigrationPhase status, but partially correlates to it. type: string phaseTransitionTimestamp: description: PhaseTransitionTimestamp is the timestamp of when the phase change occurred format: date-time type: string type: object type: array x-kubernetes-list-type: atomic type: object required: - spec type: object served: true storage: true subresources: status: {} - additionalPrinterColumns: - description: The current phase of VM instance migration jsonPath: .status.phase name: Phase type: string - description: The name of the VMI to perform the migration on jsonPath: .spec.vmiName name: VMI type: string deprecated: true deprecationWarning: kubevirt.io/v1alpha3 is now deprecated and will be removed in a future release. name: v1alpha3 schema: openAPIV3Schema: description: VirtualMachineInstanceMigration represents the object tracking a VMI's migration to another host in the cluster properties: apiVersion: description: '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' type: string kind: description: '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' type: string metadata: type: object spec: properties: vmiName: description: The name of the VMI to perform the migration on. VMI must exist in the migration objects namespace type: string type: object status: description: VirtualMachineInstanceMigration reprents information pertaining to a VMI's migration. properties: conditions: items: properties: lastProbeTime: format: date-time nullable: true type: string lastTransitionTime: format: date-time nullable: true type: string message: type: string reason: type: string status: type: string type: type: string required: - status - type type: object type: array migrationState: description: Represents the status of a live migration properties: abortRequested: description: Indicates that the migration has been requested to abort type: boolean abortStatus: description: Indicates the final status of the live migration abortion type: string completed: description: Indicates the migration completed type: boolean endTimestamp: description: The time the migration action ended format: date-time nullable: true type: string failed: description: Indicates that the migration failed type: boolean migrationConfiguration: description: Migration configurations to apply properties: allowAutoConverge: description: AllowAutoConverge allows the platform to compromise performance/availability of VMIs to guarantee successful VMI live migrations. Defaults to false type: boolean allowPostCopy: description: AllowPostCopy enables post-copy live migrations. Such migrations allow even the busiest VMIs to successfully live-migrate. However, events like a network failure can cause a VMI crash. If set to true, migrations will still start in pre-copy, but switch to post-copy when CompletionTimeoutPerGiB triggers. Defaults to false type: boolean bandwidthPerMigration: anyOf: - type: integer - type: string description: BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use. The value is in quantity per second. Defaults to 0 (no limit) pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true completionTimeoutPerGiB: description: CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take. If a live-migration takes longer to migrate than this value multiplied by the size of the VMI, the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800 format: int64 type: integer disableTLS: description: When set to true, DisableTLS will disable the additional layer of live migration encryption provided by KubeVirt. This is usually a bad idea. Defaults to false type: boolean matchSELinuxLevelOnMigration: description: By default, the SELinux level of target virt-launcher pods is forced to the level of the source virt-launcher. When set to true, MatchSELinuxLevelOnMigration lets the CRI auto-assign a random level to the target. That will ensure the target virt-launcher doesn't share categories with another pod on the node. However, migrations will fail when using RWX volumes that don't automatically deal with SELinux levels. type: boolean network: description: Network is the name of the CNI network to use for live migrations. By default, migrations go through the pod network. type: string nodeDrainTaintKey: description: 'NodeDrainTaintKey defines the taint key that indicates a node should be drained. Note: this option relies on the deprecated node taint feature. Default: kubevirt.io/drain' type: string parallelMigrationsPerCluster: description: ParallelMigrationsPerCluster is the total number of concurrent live migrations allowed cluster-wide. Defaults to 5 format: int32 type: integer parallelOutboundMigrationsPerNode: description: ParallelOutboundMigrationsPerNode is the maximum number of concurrent outgoing live migrations allowed per node. Defaults to 2 format: int32 type: integer progressTimeout: description: ProgressTimeout is the maximum number of seconds a live migration is allowed to make no progress. Hitting this timeout means a migration transferred 0 data for that many seconds. The migration is then considered stuck and therefore cancelled. Defaults to 150 format: int64 type: integer unsafeMigrationOverride: description: UnsafeMigrationOverride allows live migrations to occur even if the compatibility check indicates the migration will be unsafe to the guest. Defaults to false type: boolean type: object migrationPolicyName: description: Name of the migration policy. If string is empty, no policy is matched type: string migrationUid: description: The VirtualMachineInstanceMigration object associated with this migration type: string mode: description: Lets us know if the vmi is currently running pre or post copy migration type: string sourceNode: description: The source node that the VMI originated on type: string startTimestamp: description: The time the migration action began format: date-time nullable: true type: string targetAttachmentPodUID: description: The UID of the target attachment pod for hotplug volumes type: string targetCPUSet: description: If the VMI requires dedicated CPUs, this field will hold the dedicated CPU set on the target node items: type: integer type: array x-kubernetes-list-type: atomic targetDirectMigrationNodePorts: additionalProperties: type: integer description: The list of ports opened for live migration on the destination node type: object targetNode: description: The target node that the VMI is moving to type: string targetNodeAddress: description: The address of the target node to use for the migration type: string targetNodeDomainDetected: description: The Target Node has seen the Domain Start Event type: boolean targetNodeDomainReadyTimestamp: description: The timestamp at which the target node detects the domain is active format: date-time type: string targetNodeTopology: description: If the VMI requires dedicated CPUs, this field will hold the numa topology on the target node type: string targetPod: description: The target pod that the VMI is moving to type: string type: object phase: description: VirtualMachineInstanceMigrationPhase is a label for the condition of a VirtualMachineInstanceMigration at the current time. type: string phaseTransitionTimestamps: description: PhaseTransitionTimestamp is the timestamp of when the last phase change occurred items: description: VirtualMachineInstanceMigrationPhaseTransitionTimestamp gives a timestamp in relation to when a phase is set on a vmi properties: phase: description: Phase is the status of the VirtualMachineInstanceMigrationPhase in kubernetes world. It is not the VirtualMachineInstanceMigrationPhase status, but partially correlates to it. type: string phaseTransitionTimestamp: description: PhaseTransitionTimestamp is the timestamp of when the phase change occurred format: date-time type: string type: object type: array x-kubernetes-list-type: atomic type: object required: - spec type: object served: true storage: false subresources: status: {}