This Document documents the types introduced by the hyperconverged-cluster-operator to be consumed by users.
Note this document is generated from code comments. When contributing a change to this document please do so by changing the code comments.
- ApplicationAwareConfigurations
- CertRotateConfigCA
- CertRotateConfigServer
- CpuModelInfo
- DataImportCronStatus
- DataImportCronTemplate
- DataImportCronTemplateStatus
- HigherWorkloadDensityConfiguration
- HyperConverged
- HyperConvergedCertConfig
- HyperConvergedConfig
- HyperConvergedFeatureGates
- HyperConvergedList
- HyperConvergedObsoleteCPUs
- HyperConvergedSpec
- HyperConvergedStatus
- HyperConvergedWorkloadUpdateStrategy
- KubeMacPoolConfig
- LiveMigrationConfigurations
- LogVerbosityConfiguration
- MediatedDevicesConfiguration
- MediatedHostDevice
- NodeInfoStatus
- NodeMediatedDeviceTypesConfig
- OperandResourceRequirements
- PciHostDevice
- PermittedHostDevices
- StorageImportConfig
- USBHostDevice
- USBSelector
- Version
- VirtualMachineOptions
ApplicationAwareConfigurations holds the AAQ configurations
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| vmiCalcConfigName | VmiCalcConfigName determine how resource allocation will be done with ApplicationsResourceQuota. allowed values are: VmiPodUsage, VirtualResources, DedicatedVirtualResources or IgnoreVmiCalculator | *aaqv1alpha1.VmiCalcConfigName | DedicatedVirtualResources | false |
| namespaceSelector | NamespaceSelector determines in which namespaces scheduling gate will be added to pods.. | *metav1.LabelSelector | false | |
| allowApplicationAwareClusterResourceQuota | AllowApplicationAwareClusterResourceQuota if set to true, allows creation and management of ClusterAppsResourceQuota | bool | false | false |
CertRotateConfigCA contains the tunables for TLS certificates.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| duration | The requested 'duration' (i.e. lifetime) of the Certificate. This should comply with golang's ParseDuration format (https://golang.org/pkg/time/#ParseDuration) | *metav1.Duration | "48h0m0s" | false |
| renewBefore | The amount of time before the currently issued certificate's notAfter time that we will begin to attempt to renew the certificate. This should comply with golang's ParseDuration format (https://golang.org/pkg/time/#ParseDuration) |
*metav1.Duration | "24h0m0s" | false |
CertRotateConfigServer contains the tunables for TLS certificates.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| duration | The requested 'duration' (i.e. lifetime) of the Certificate. This should comply with golang's ParseDuration format (https://golang.org/pkg/time/#ParseDuration) | *metav1.Duration | "24h0m0s" | false |
| renewBefore | The amount of time before the currently issued certificate's notAfter time that we will begin to attempt to renew the certificate. This should comply with golang's ParseDuration format (https://golang.org/pkg/time/#ParseDuration) |
*metav1.Duration | "12h0m0s" | false |
CpuModelInfo contains information about a CPU model and its availability in the cluster
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| name | Name is the CPU model name | string | true | |
| benchmark | Benchmark is the CPU performance score for this model | int | true | |
| nodes | Nodes is the number of nodes that support this CPU model | int | true | |
| cpu | CPU is the total CPU cores available across all nodes supporting this model | *resource.Quantity | true | |
| memory | Memory is the total memory available across all nodes supporting this model | *resource.Quantity | true |
DataImportCronStatus is the status field of the DIC template
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| conditions | Conditions is a list of conditions that describe the state of the DataImportCronTemplate. | []metav1.Condition | false | |
| commonTemplate | CommonTemplate indicates whether this is a common template (true), or a custom one (false) | bool | false | |
| modified | Modified indicates if a common template was customized. Always false for custom templates. | bool | false | |
| originalSupportedArchitectures | OriginalSupportedArchitectures is a comma-separated list of CPU architectures that the original template supports. | string | false |
DataImportCronTemplate defines the template type for DataImportCrons. It requires metadata.name to be specified while leaving namespace as optional.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| metadata | metav1.ObjectMeta | false | ||
| spec | *cdiv1beta1.DataImportCronSpec | false |
DataImportCronTemplateStatus is a copy of a dataImportCronTemplate as defined in the spec, or in the HCO image.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| metadata | metav1.ObjectMeta | false | ||
| spec | *cdiv1beta1.DataImportCronSpec | false | ||
| status | DataImportCronStatus | false |
HigherWorkloadDensity holds configuration aimed to increase virtual machine density
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| memoryOvercommitPercentage | MemoryOvercommitPercentage is the percentage of memory we want to give VMIs compared to the amount given to its parent pod (virt-launcher). For example, a value of 102 means the VMI will "see" 2% more memory than its parent pod. Values under 100 are effectively "undercommits". Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. | int | 100 | false |
HyperConverged is the Schema for the hyperconvergeds API
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| metadata | metav1.ObjectMeta | false | ||
| spec | HyperConvergedSpec | {"certConfig": {"ca": {"duration": "48h0m0s", "renewBefore": "24h0m0s"}, "server": {"duration": "24h0m0s", "renewBefore": "12h0m0s"}},"featureGates": {"downwardMetrics": false, "deployKubeSecondaryDNS": false, "disableMDevConfiguration": false, "persistentReservation": false, "enableMultiArchBootImageImport": false, "decentralizedLiveMigration": false, "declarativeHotplugVolumes": false, "videoConfig": true, "objectGraph": false}, "liveMigrationConfig": {"completionTimeoutPerGiB": 150, "parallelMigrationsPerCluster": 5, "parallelOutboundMigrationsPerNode": 2, "progressTimeout": 150, "allowAutoConverge": false, "allowPostCopy": false}, "resourceRequirements": {"vmiCPUAllocationRatio": 10}, "uninstallStrategy": "BlockUninstallIfWorkloadsExist", "virtualMachineOptions": {"disableFreePageReporting": false, "disableSerialConsoleLog": false}, "enableApplicationAwareQuota": false, "enableCommonBootImageImport": true, "deployVmConsoleProxy": false} | false | |
| status | HyperConvergedStatus | false |
HyperConvergedCertConfig holds the CertConfig entries for the HCO operands
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| ca | CA configuration - CA certs are kept in the CA bundle as long as they are valid | CertRotateConfigCA | {"duration": "48h0m0s", "renewBefore": "24h0m0s"} | false |
| server | Server configuration - Certs are rotated and discarded | CertRotateConfigServer | {"duration": "24h0m0s", "renewBefore": "12h0m0s"} | false |
HyperConvergedConfig defines a set of configurations to pass to components
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| nodePlacement | NodePlacement describes node scheduling configuration. | *sdkapi.NodePlacement | false |
HyperConvergedFeatureGates is a set of optional feature gates to enable or disable new features that are not enabled by default yet.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| downwardMetrics | Allow to expose a limited set of host metrics to guests. | *bool | false | false |
| withHostPassthroughCPU | Deprecated: there is no such FG in KubeVirt. This field is ignored | *bool | false | |
| enableCommonBootImageImport | Deprecated: This field is ignored. Use spec.enableCommonBootImageImport instead | *bool | false | |
| deployTektonTaskResources | Deprecated: This field is ignored and will be removed on the next version of the API. | *bool | false | |
| deployVmConsoleProxy | Deprecated: This field is ignored and will be removed on the next version of the API. Use spec.deployVmConsoleProxy instead | *bool | false | |
| deployKubeSecondaryDNS | Deploy KubeSecondaryDNS by CNAO | *bool | false | false |
| deployKubevirtIpamController | Deprecated: this field is ignored and will be removed in the next version of the API. | *bool | false | |
| nonRoot | Deprecated: // Deprecated: This field is ignored and will be removed on the next version of the API. | *bool | false | |
| disableMDevConfiguration | Disable mediated devices handling on KubeVirt | *bool | false | false |
| persistentReservation | Enable persistent reservation of a LUN through the SCSI Persistent Reserve commands on Kubevirt. In order to issue privileged SCSI ioctls, the VM requires activation of the persistent reservation flag. Once this feature gate is enabled, then the additional container with the qemu-pr-helper is deployed inside the virt-handler pod. Enabling (or removing) the feature gate causes the redeployment of the virt-handler pod. | *bool | false | false |
| enableManagedTenantQuota | Deprecated: This field is ignored and will be removed on the next version of the API. | *bool | false | |
| autoResourceLimits | Deprecated: this field is ignored and will be removed in the next version of the API. | *bool | false | |
| alignCPUs | Enable KubeVirt to request up to two additional dedicated CPUs in order to complete the total CPU count to an even parity when using emulator thread isolation. Note: this feature is in Developer Preview. | *bool | false | false |
| enableApplicationAwareQuota | Deprecated: This field is ignored and will be removed on the next version of the API. Use spec.enableApplicationAwareQuota instead | *bool | false | |
| primaryUserDefinedNetworkBinding | primaryUserDefinedNetworkBinding deploys the needed configurations for kubevirt users to be able to bind their VM to a UDN network on the VM's primary interface. Deprecated: this field is ignored and will be removed in the next version of the API. | *bool | false | |
| enableMultiArchBootImageImport | EnableMultiArchBootImageImport allows the HCO to run on heterogeneous clusters with different CPU architectures. Setting this field to true will allow the HCO to create Golden Images for different CPU architectures.\n\nThis feature is in Developer Preview. | *bool | false | false |
| decentralizedLiveMigration | DecentralizedLiveMigration enables the decentralized live migration (cross-cluster migration) feature. This feature allows live migration of VirtualMachineInstances between different clusters. This feature is in Developer Preview. | *bool | false | false |
| declarativeHotplugVolumes | DeclarativeHotplugVolumes enables the use of the declarative volume hotplug feature in KubeVirt. When set to true, the "DeclarativeHotplugVolumes" feature gate is enabled instead of "HotplugVolumes". When set to false or nil, the "HotplugVolumes" feature gate is enabled (default behavior). This feature is in Developer Preview. | *bool | false | false |
| videoConfig | EnableVideoDeviceConfiguration allows users to configure video device types for their virtual machines. This can be useful for workloads that require specific video capabilities or architectures. Note: This feature is in Tech Preview. | *bool | true | false |
| objectGraph | ObjectGraph enables the ObjectGraph VM and VMI subresource in KubeVirt. This subresource returns a structured list of k8s objects that are related to the specified VM or VMI, enabling better dependency tracking. Note: This feature is in Developer Preview. | *bool | false | false |
HyperConvergedList contains a list of HyperConverged
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| metadata | metav1.ListMeta | false | ||
| items | []HyperConverged | true |
HyperConvergedObsoleteCPUs allows avoiding scheduling of VMs for obsolete CPU models
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| minCPUModel | MinCPUModel is not in use Deprecated: This field is not in use and is ignored. | string | false | |
| cpuModels | CPUModels is a list of obsolete CPU models. When the node-labeller obtains the list of obsolete CPU models, it eliminates those CPU models and creates labels for valid CPU models. The default values for this field is nil, however, HCO uses opinionated values, and adding values to this list will add them to the opinionated values. | []string | false |
HyperConvergedSpec defines the desired state of HyperConverged
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| localStorageClassName | Deprecated: LocalStorageClassName the name of the local storage class. | string | false | |
| tuningPolicy | TuningPolicy allows to configure the mode in which the RateLimits of kubevirt are set. If TuningPolicy is not present the default kubevirt values are used. It can be set to annotation for fine-tuning the kubevirt queryPerSeconds (qps) and burst values. Qps and burst values are taken from the annotation hco.kubevirt.io/tuningPolicy |
HyperConvergedTuningPolicy | false | |
| infra | infra HyperConvergedConfig influences the pod configuration (currently only placement) for all the infra components needed on the virtualization enabled cluster but not necessarily directly on each node running VMs/VMIs. | HyperConvergedConfig | false | |
| workloads | workloads HyperConvergedConfig influences the pod configuration (currently only placement) of components which need to be running on a node where virtualization workloads should be able to run. Changes to Workloads HyperConvergedConfig can be applied only without existing workload. | HyperConvergedConfig | false | |
| featureGates | featureGates is a map of feature gate flags. Setting a flag to true will enable the feature. Setting false or removing the feature gate, disables the feature. |
HyperConvergedFeatureGates | {"downwardMetrics": false, "deployKubeSecondaryDNS": false, "disableMDevConfiguration": false, "persistentReservation": false, "enableMultiArchBootImageImport": false, "decentralizedLiveMigration": false, "declarativeHotplugVolumes": false, "videoConfig": true, "objectGraph": false} | false |
| liveMigrationConfig | Live migration limits and timeouts are applied so that migration processes do not overwhelm the cluster. | LiveMigrationConfigurations | {"completionTimeoutPerGiB": 150, "parallelMigrationsPerCluster": 5, "parallelOutboundMigrationsPerNode": 2, "progressTimeout": 150, "allowAutoConverge": false, "allowPostCopy": false} | false |
| permittedHostDevices | PermittedHostDevices holds information about devices allowed for passthrough | *PermittedHostDevices | false | |
| mediatedDevicesConfiguration | MediatedDevicesConfiguration holds information about MDEV types to be defined on nodes, if available | *MediatedDevicesConfiguration | false | |
| certConfig | certConfig holds the rotation policy for internal, self-signed certificates | HyperConvergedCertConfig | {"ca": {"duration": "48h0m0s", "renewBefore": "24h0m0s"}, "server": {"duration": "24h0m0s", "renewBefore": "12h0m0s"}} | false |
| resourceRequirements | ResourceRequirements describes the resource requirements for the operand workloads. | *OperandResourceRequirements | {"vmiCPUAllocationRatio": 10} | false |
| scratchSpaceStorageClass | Override the storage class used for scratch space during transfer operations. The scratch space storage class is determined in the following order: value of scratchSpaceStorageClass, if that doesn't exist, use the default storage class, if there is no default storage class, use the storage class of the DataVolume, if no storage class specified, use no storage class for scratch space | *string | false | |
| vddkInitImage | VDDK Init Image eventually used to import VMs from external providers\n\nDeprecated: please use the Migration Toolkit for Virtualization | *string | false | |
| defaultCPUModel | DefaultCPUModel defines a cluster default for CPU model: default CPU model is set when VMI doesn't have any CPU model. When VMI has CPU model set, then VMI's CPU model is preferred. When default CPU model is not set and VMI's CPU model is not set too, host-model will be set. Default CPU model can be changed when kubevirt is running. | *string | false | |
| defaultRuntimeClass | DefaultRuntimeClass defines a cluster default for the RuntimeClass to be used for VMIs pods if not set there. Default RuntimeClass can be changed when kubevirt is running, existing VMIs are not impacted till the next restart/live-migration when they are eventually going to consume the new default RuntimeClass. | *string | false | |
| obsoleteCPUs | ObsoleteCPUs allows avoiding scheduling of VMs for obsolete CPU models | *HyperConvergedObsoleteCPUs | false | |
| commonTemplatesNamespace | CommonTemplatesNamespace defines namespace in which common templates will be deployed. It overrides the default openshift namespace. | *string | false | |
| storageImport | StorageImport contains configuration for importing containerized data | *StorageImportConfig | false | |
| workloadUpdateStrategy | WorkloadUpdateStrategy defines at the cluster level how to handle automated workload updates | HyperConvergedWorkloadUpdateStrategy | {"workloadUpdateMethods": {"LiveMigrate"}, "batchEvictionSize": 10, "batchEvictionInterval": "1m0s"} | false |
| dataImportCronTemplates | DataImportCronTemplates holds list of data import cron templates (golden images) | []DataImportCronTemplate | false | |
| filesystemOverhead | FilesystemOverhead describes the space reserved for overhead when using Filesystem volumes. A value is between 0 and 1, if not defined it is 0.055 (5.5 percent overhead) | *cdiv1beta1.FilesystemOverhead | false | |
| uninstallStrategy | UninstallStrategy defines how to proceed on uninstall when workloads (VirtualMachines, DataVolumes) still exist. BlockUninstallIfWorkloadsExist will prevent the CR from being removed when workloads still exist. BlockUninstallIfWorkloadsExist is the safest choice to protect your workloads from accidental data loss, so it's strongly advised. RemoveWorkloads will cause all the workloads to be cascading deleted on uninstallation. WARNING: please notice that RemoveWorkloads will cause your workloads to be deleted as soon as this CR will be, even accidentally, deleted. Please correctly consider the implications of this option before setting it. BlockUninstallIfWorkloadsExist is the default behaviour. | HyperConvergedUninstallStrategy | BlockUninstallIfWorkloadsExist | false |
| logVerbosityConfig | LogVerbosityConfig configures the verbosity level of Kubevirt's different components. The higher the value - the higher the log verbosity. | *LogVerbosityConfiguration | false | |
| tlsSecurityProfile | TLSSecurityProfile specifies the settings for TLS connections to be propagated to all kubevirt-hyperconverged components. If unset, the hyperconverged cluster operator will consume the value set on the APIServer CR on OCP/OKD or Intermediate if on vanilla k8s. Note that only Old, Intermediate and Custom profiles are currently supported, and the maximum available MinTLSVersions is VersionTLS12. | *openshiftconfigv1.TLSSecurityProfile | false | |
| tektonPipelinesNamespace | TektonPipelinesNamespace defines namespace in which example pipelines will be deployed. If unset, then the default value is the operator namespace. Deprecated: This field is ignored. | *string | false | |
| tektonTasksNamespace | TektonTasksNamespace defines namespace in which tekton tasks will be deployed. If unset, then the default value is the operator namespace. Deprecated: This field is ignored. | *string | false | |
| kubeSecondaryDNSNameServerIP | KubeSecondaryDNSNameServerIP defines name server IP used by KubeSecondaryDNS | *string | false | |
| kubeMacPoolConfiguration | KubeMacPoolConfiguration holds kubemacpool MAC address range configuration. | *KubeMacPoolConfig | false | |
| evictionStrategy | EvictionStrategy defines at the cluster level if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain. If the VirtualMachineInstance specific field is set it overrides the cluster level one. Allowed values: - None no eviction strategy at cluster level. - LiveMigrate migrate the VM on eviction; a not live migratable VM with no specific strategy will block the drain of the node util manually evicted. - LiveMigrateIfPossible migrate the VM on eviction if live migration is possible, otherwise directly evict. - External block the drain, track eviction and notify an external controller. Defaults to LiveMigrate with multiple worker nodes, None on single worker clusters. |
*v1.EvictionStrategy | false | |
| vmStateStorageClass | VMStateStorageClass is the name of the storage class to use for the PVCs created to preserve VM state, like TPM. | *string | false | |
| virtualMachineOptions | VirtualMachineOptions holds the cluster level information regarding the virtual machine. | *VirtualMachineOptions | {"disableFreePageReporting": false, "disableSerialConsoleLog": false} | false |
| commonBootImageNamespace | CommonBootImageNamespace override the default namespace of the common boot images, in order to hide them.\n\nIf not set, HCO won't set any namespace, letting SSP to use the default. If set, use the namespace to create the DataImportCronTemplates and the common image streams, with this namespace. This field is not set by default. | *string | false | |
| ksmConfiguration | KSMConfiguration holds the information regarding the enabling the KSM in the nodes (if available). | *v1.KSMConfiguration | false | |
| networkBinding | NetworkBinding defines the network binding plugins. Those bindings can be used when defining virtual machine interfaces. | map[string]v1.InterfaceBindingPlugin | false | |
| applicationAwareConfig | ApplicationAwareConfig set the AAQ configurations | *ApplicationAwareConfigurations | false | |
| higherWorkloadDensity | HigherWorkloadDensity holds configuration aimed to increase virtual machine density | *HigherWorkloadDensityConfiguration | {"memoryOvercommitPercentage": 100} | false |
| enableCommonBootImageImport | Opt-in to automatic delivery/updates of the common data import cron templates. There are two sources for the data import cron templates: hard coded list of common templates, and custom (user defined) templates that can be added to the dataImportCronTemplates field. This field only controls the common templates. It is possible to use custom templates by adding them to the dataImportCronTemplates field. | *bool | true | false |
| instancetypeConfig | InstancetypeConfig holds the configuration of instance type related functionality within KubeVirt. | *v1.InstancetypeConfiguration | false | |
| CommonInstancetypesDeployment | CommonInstancetypesDeployment holds the configuration of common-instancetypes deployment within KubeVirt. | *v1.CommonInstancetypesDeployment | false | |
| deployVmConsoleProxy | deploy VM console proxy resources in SSP operator | *bool | false | false |
| enableApplicationAwareQuota | EnableApplicationAwareQuota if true, enables the Application Aware Quota feature | *bool | false | false |
| liveUpdateConfiguration | LiveUpdateConfiguration holds the cluster configuration for live update of virtual machines - max cpu sockets, max guest memory and max hotplug ratio. This setting can affect VM CPU and memory settings. | *v1.LiveUpdateConfiguration | false |
HyperConvergedStatus defines the observed state of HyperConverged
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| conditions | Conditions describes the state of the HyperConverged resource. | []metav1.Condition | false | |
| relatedObjects | RelatedObjects is a list of objects created and maintained by this operator. Object references will be added to this list after they have been created AND found in the cluster. | []corev1.ObjectReference | false | |
| versions | Versions is a list of HCO component versions, as name/version pairs. The version with a name of "operator" is the HCO version itself, as described here: https://github.com/openshift/cluster-version-operator/blob/master/docs/dev/clusteroperator.md#version | []Version | false | |
| observedGeneration | ObservedGeneration reflects the HyperConverged resource generation. If the ObservedGeneration is less than the resource generation in metadata, the status is out of date | int64 | false | |
| dataImportSchedule | DataImportSchedule is the cron expression that is used in for the hard-coded data import cron templates. HCO generates the value of this field once and stored in the status field, so will survive restart. | string | false | |
| dataImportCronTemplates | DataImportCronTemplates is a list of the actual DataImportCronTemplates as HCO update in the SSP CR. The list contains both the common and the custom templates, including any modification done by HCO. | []DataImportCronTemplateStatus | false | |
| systemHealthStatus | SystemHealthStatus reflects the health of HCO and its secondary resources, based on the aggregated conditions. | string | false | |
| infrastructureHighlyAvailable | InfrastructureHighlyAvailable describes whether the cluster has only one worker node (false) or more (true). | *bool | false | |
| nodeInfo | NodeInfo holds information about the cluster nodes | NodeInfoStatus | false |
HyperConvergedWorkloadUpdateStrategy defines options related to updating a KubeVirt install
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| workloadUpdateMethods | WorkloadUpdateMethods defines the methods that can be used to disrupt workloads during automated workload updates. When multiple methods are present, the least disruptive method takes precedence over more disruptive methods. For example if both LiveMigrate and Evict methods are listed, only VMs which are not live migratable will be restarted/shutdown. An empty list defaults to no automated workload updating. | []string | {"LiveMigrate"} | true |
| batchEvictionSize | BatchEvictionSize Represents the number of VMIs that can be forced updated per the BatchShutdownInterval interval | *int | 10 | false |
| batchEvictionInterval | BatchEvictionInterval Represents the interval to wait before issuing the next batch of shutdowns | *metav1.Duration | "1m0s" | false |
KubeMacPoolConfig defines kubemacpool MAC address range configuration
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| rangeStart | RangeStart defines the first MAC address in the kubemacpool range. The MAC address format should be AA:BB:CC:DD:EE:FF. | *string | false | |
| rangeEnd | RangeEnd defines the last MAC address in the kubemacpool range. The MAC address format should be AA:BB:CC:DD:EE:FF. | *string | false |
LiveMigrationConfigurations - Live migration limits and timeouts are applied so that migration processes do not overwhelm the cluster.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| parallelMigrationsPerCluster | Number of migrations running in parallel in the cluster. | *uint32 | 5 | false |
| parallelOutboundMigrationsPerNode | Maximum number of outbound migrations per node. | *uint32 | 2 | false |
| bandwidthPerMigration | Bandwidth limit of each migration, the value is quantity of bytes per second (e.g. 2048Mi = 2048MiB/sec) | *string | false | |
| completionTimeoutPerGiB | If a migrating VM is big and busy, while the connection to the destination node is slow, migration may never converge. The completion timeout is calculated based on completionTimeoutPerGiB times the size of the guest (both RAM and migrated disks, if any). For example, with completionTimeoutPerGiB set to 800, a virtual machine instance with 6GiB memory will timeout if it has not completed migration in 1h20m. Use a lower completionTimeoutPerGiB to induce quicker failure, so that another destination or post-copy is attempted. Use a higher completionTimeoutPerGiB to let workload with spikes in its memory dirty rate to converge. The format is a number. | *int64 | 150 | false |
| progressTimeout | The migration will be canceled if memory copy fails to make progress in this time, in seconds. | *int64 | 150 | false |
| network | The migrations will be performed over a dedicated multus network to minimize disruption to tenant workloads due to network saturation when VM live migrations are triggered. | *string | false | |
| allowAutoConverge | AllowAutoConverge allows the platform to compromise performance/availability of VMIs to guarantee successful VMI live migrations. Defaults to false | *bool | false | false |
| allowPostCopy | When enabled, KubeVirt attempts to use post-copy live-migration in case it reaches its completion timeout while attempting pre-copy live-migration. Post-copy migrations allow even the busiest VMs to successfully live-migrate. However, events like a network failure or a failure in any of the source or destination nodes can cause the migrated VM to crash or reach inconsistency. Enable this option when evicting nodes is more important than keeping VMs alive. Defaults to false. | *bool | false | false |
LogVerbosityConfiguration configures log verbosity for different components
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| kubevirt | Kubevirt is a struct that allows specifying the log verbosity level that controls the amount of information logged for each Kubevirt component. | *v1.LogVerbosity | false | |
| cdi | CDI indicates the log verbosity level that controls the amount of information logged for CDI components. | *int32 | false |
MediatedDevicesConfiguration holds information about MDEV types to be defined, if available
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| mediatedDeviceTypes | []string | true | ||
| mediatedDevicesTypes | Deprecated: please use mediatedDeviceTypes instead. | []string | false | |
| nodeMediatedDeviceTypes | []NodeMediatedDeviceTypesConfig | false |
MediatedHostDevice represents a host mediated device allowed for passthrough
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| mdevNameSelector | name of a mediated device type required to identify a mediated device on a host | string | true | |
| resourceName | name by which a device is advertised and being requested | string | true | |
| externalResourceProvider | indicates that this resource is being provided by an external device plugin | bool | false | |
| disabled | HCO enforces the existence of several MediatedHostDevice objects. Set disabled field to true instead of remove these objects. | bool | false |
NodeInfoStatus holds information about the cluster nodes
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| workloadsArchitectures | WorkloadsArchitectures is a distinct list of the CPU architectures of the workloads nodes in the cluster. | []string | false | |
| controlPlaneArchitectures | ControlPlaneArchitectures is a distinct list of the CPU architecture of the control-plane nodes. | []string | false | |
| recommendedCpuModels | RecommendedCpuModels is a list of recommended CPU models for the cluster based on available nodes | []CpuModelInfo | false |
NodeMediatedDeviceTypesConfig holds information about MDEV types to be defined in a specific node that matches the NodeSelector field.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| nodeSelector | NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ | map[string]string | true | |
| mediatedDeviceTypes | []string | true | ||
| mediatedDevicesTypes | Deprecated: please use mediatedDeviceTypes instead. | []string | true |
OperandResourceRequirements is a list of resource requirements for the operand workloads pods
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| storageWorkloads | StorageWorkloads defines the resources requirements for storage workloads. It will propagate to the CDI custom resource | *corev1.ResourceRequirements | false | |
| vmiCPUAllocationRatio | VmiCPUAllocationRatio defines, for each requested virtual CPU, how much physical CPU to request per VMI from the hosting node. The value is in fraction of a CPU thread (or core on non-hyperthreaded nodes). VMI POD CPU request = number of vCPUs * 1/vmiCPUAllocationRatio For example, a value of 1 means 1 physical CPU thread per VMI CPU thread. A value of 100 would be 1% of a physical thread allocated for each requested VMI thread. This option has no effect on VMIs that request dedicated CPUs. Defaults to 10 | *int | 10 | false |
| autoCPULimitNamespaceLabelSelector | When set, AutoCPULimitNamespaceLabelSelector will set a CPU limit on virt-launcher for VMIs running inside namespaces that match the label selector. The CPU limit will equal the number of requested vCPUs. This setting does not apply to VMIs with dedicated CPUs. | *metav1.LabelSelector | false |
PciHostDevice represents a host PCI device allowed for passthrough
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| pciDeviceSelector | a combination of a vendor_id:product_id required to identify a PCI device on a host. | string | true | |
| resourceName | name by which a device is advertised and being requested | string | true | |
| externalResourceProvider | indicates that this resource is being provided by an external device plugin | bool | false | |
| disabled | HCO enforces the existence of several PciHostDevice objects. Set disabled field to true instead of remove these objects. | bool | false |
PermittedHostDevices holds information about devices allowed for passthrough
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| pciHostDevices | []PciHostDevice | false | ||
| usbHostDevices | []USBHostDevice | false | ||
| mediatedDevices | []MediatedHostDevice | false |
StorageImportConfig contains configuration for importing containerized data
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| insecureRegistries | InsecureRegistries is a list of image registries URLs that are not secured. Setting an insecure registry URL in this list allows pulling images from this registry. | []string | false |
USBHostDevice represents a host USB device allowed for passthrough
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| resourceName | Identifies the list of USB host devices. e.g: kubevirt.io/storage, kubevirt.io/bootable-usb, etc | string | true | |
| selectors | []USBSelector | false | ||
| externalResourceProvider | If true, KubeVirt will leave the allocation and monitoring to an external device plugin | bool | false | |
| disabled | HCO enforces the existence of several USBHostDevice objects. Set disabled field to true instead of remove these objects. | bool | false |
USBSelector represents a selector for a USB device allowed for passthrough
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| vendor | string | true | ||
| product | string | true |
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| name | string | false | ||
| version | string | false |
VirtualMachineOptions holds the cluster level information regarding the virtual machine.
| Field | Description | Scheme | Default | Required |
|---|---|---|---|---|
| disableFreePageReporting | DisableFreePageReporting disable the free page reporting of memory balloon device https://libvirt.org/formatdomain.html#memory-balloon-device. This will have effect only if AutoattachMemBalloon is not false and the vmi is not requesting any high performance feature (dedicatedCPU/realtime/hugePages), in which free page reporting is always disabled. | *bool | false | false |
| disableSerialConsoleLog | DisableSerialConsoleLog disables logging the auto-attached default serial console. If not set, serial console logs will be written to a file and then streamed from a container named guest-console-log. The value can be individually overridden for each VM, not relevant if AutoattachSerialConsole is disabled for the VM. |
*bool | false | false |