Skip to main content

Create a VM

This guide walks through the VM creation wizard and batch creation options in PaletteAI VM Launchpad.

Overview​

The VM creation wizard guides you through seven steps: Source, Compute, Storage, Network, Hardware, Lifecycle, and Review. The wizard supports creating VMs from templates, golden images, ISOs, or blank disks.

tip

Use the Advanced button to open the YAML preview drawer. The preview updates live as you change selections in each step.

Prerequisites​

  • A cluster created using the VM Launchpad. Refer to Install VM Launchpad for guidance.

  • Credentials to access the VM Launchpad UI hosted on your cluster. You can use either Keycloak OIDC credentials or local admin credentials configured during cluster creation.

Create a Virtual Machine​

After you upload an OS ISO, create a golden image, or create a template, you can deploy a VM.

  1. From the left main menu, select Workloads > Virtual Machines.

  2. Select Create VM.

    Screenshot showing Create VM button

  3. The Create Virtual Machine wizard opens. Complete the following fields on the Source wizard step.

    ParameterDescription
    SourceSelect the source for the VM: Template, Image/ISO, or Custom.
    OSSelect Linux or Windows.
    NamespaceSelect the namespace that contains your ISO.
    TemplateIf you select Template as the source, select an existing VmTemplate image from the Template drop-down menu.
    Image/ISOIf you select Image/ISO as the source, select an existing golden image, disk image, or OS ISO file from the Image/ISO drop-down menu.
    CustomIf you select Custom, VM Launchpad creates a VM from scratch with no template, golden image, or ISO as its source. Configure the VM's compute, storage, and network settings manually in the following wizard steps.
    VM NameEnter a unique name for the VM. This field only accepts lowercase letters, numbers, and hyphens. The name must end with a letter or digit.
    info

    You can select a golden image from any namespace you can access, not only the namespace of the VM you are creating. VM Launchpad provisions the VM directly from the golden image through the Create VM flow, so you no longer need to create a template first to use a golden image across namespaces.

  4. Configure any extra Source options for your VM. Select Next when you complete this page.

    ParameterDescription
    BatchSelect Create multiple VMs. Under Count, enter the number of VMs to create. From the Naming drop-down menu, select the naming convention: name-1, name-2 or name01, name02. Under Start #, enter the number where the naming convention begins.
    VM PreferenceIn the Filter preferences field, enter the operating system family name, or select the operating system family from the available options. Linux distributions appear for Linux image/ISOs, and Windows preferences appear only for Windows image/ISOs. Refer to VM Preferences for details.
    LabelsEnter key-value pair labels to add to your VM.
    AnnotationsEnter key-value pair Kubernetes annotations to add to your VM. Select Disable PCI Hole 64-bit when you use legacy operating systems, such as Windows XP or Windows 2003. VM Launchpad sets the kubevirt.io/disablePCIHole64: "true" annotation on the VMI template spec. Refer to Running legacy Windows versions for more information.
  5. On the Compute wizard step, select Instance Type to use predefined instance types, or select Custom to set CPU and memory resource options manually.

    ModeDescription
    Instance TypeSelect a predefined CPU and memory profile. The u1 prefix indicates general-purpose types with balanced CPU and memory.
    CustomSet CPU and memory resources manually. Consider what the operating system and any applications running in the operating system need before you select custom values.

    For more about instance types, custom mode, and creating your own profiles, refer to Instance Types & Preferences.

    warning

    If you select an instance type during VM creation, you cannot change the CPU cores, CPU sockets, CPU threads, or memory individually. You can change the instance type after provisioning, but the new CPU and memory values do not take effect until you restart the VM.

    If you select Custom, configure the following parameters.

    ParameterDescription
    CPU CoresEnter the number of vCPUs for the VM. This value is visible to the guest operating system.
    MemoryEnter the amount of memory for the VM and select Gi for gigabytes or Mi for megabytes.
    Run StrategyFrom the drop-down menu, select Always, RerunOnFailure, Manual, or Halted for the VM default power behavior.
    Resource Requests & LimitsOptional. Control Kubernetes resource reservations for overcommit and QoS. Set memory requests lower than guest memory for overcommit.
  6. In the Scheduling section, select the eviction strategy for the VM.

    ParameterDescription
    Eviction StrategyFrom the drop-down menu, select LiveMigrate, LiveMigrateIfPossible, or None.
    Grace PeriodEnter the number of seconds to allow a VM to shut down cleanly before it is forcefully terminated.
    Priority ClassEnter a priority class value. Kubernetes schedules VMs with a higher priority number before VMs with a lower priority number.
    Start StrategyFrom the drop-down menu, select Normal or Paused.
  1. On the Storage wizard step, verify that a root disk is configured. The root disk is automatically populated from the ISO you selected in the Source step. Adjust the disk size in Gi or Mi. When you create a VM from a template, this value overrides the template default value.

  2. Select the Storage Class from the drop-down menu.

  3. (Optional) Add extra disks by selecting Add Disk, and add extra CD-ROMs by selecting Add CD-ROM.

  4. Select the Boot Order for the VM. By default, Disk is selected. You can also boot from CD-ROM or Network. Then select Next.

  5. On the Network wizard step, the VM has one interface assigned with the Pod Network (masquerade) mode by default. This option provides outbound connectivity through NAT. Select Add NIC to add extra NICs as needed, and select either Pod Network (masquerade) or Multus Network (bridge). You can create extra Network Attachment Definition (NAD) resources in Infrastructure > Networks.

    Under DNS Settings, you can optionally define the Hostname and Subdomain for the VM.

    When batch mode is enabled and you have bridge NICs, a Batch Static IP Assignment section appears. Enter IP/CIDR, gateway, and DNS for each VM. Use Fill Down to auto-increment IPs by incrementing the last octet (for example, 192.168.1.10/24 → 192.168.1.11/24, 192.168.1.12/24). Then select Next.

    info

    The file server is available on the Pod Network (masquerade) network. If you need to install QEMU or other binaries, install them during the golden image build over the Pod Network (masquerade) network.

  6. For Hardware (optional), configure any advanced hardware settings required for the VM. You can skip this step for basic VMs. Then select Next.

    Display optional advanced hardware settings.
    CategorySettingDescription
    FirmwareUEFI / EFI BootEnable UEFI instead of BIOS.
    FirmwareSecure BootRequires EFI. Enables SMM.
    FirmwarePersistent EFI VariablesPersist NVRAM. Requires the VMPersistentState feature gate.
    FirmwareMachine TypeOverride the default machine type, such as q35.
    FirmwareSMBIOSOptionally configure UUID and serial values.
    CPU AdvancedCPU ModelSelect host-passthrough, host-model, or a named model, such as Skylake-Server or EPYC-Rome.
    CPU AdvancedDedicated CPU PlacementPin vCPUs to physical cores.
    CPU AdvancedNUMA Topology PassthroughPass host NUMA topology to the guest.
    CPU AdvancedCPU FeaturesAdd require, force, disable, or forbid rules for specific CPU features.
    DevicesVirtio RNGAdd a random number generator.
    DevicesTablet InputAdd a USB input device for pointer precision.
    DevicesHeadlessCreate the VM without a graphics device.
    DevicesVideo TypeSelect VGA, Virtio, or Bochs.
    DevicesTPM DeviceAdd a Trusted Platform Module. Select Persistent TPM State to keep the TPM state in persistent storage.
    DevicesUSB RedirectionEnable client passthrough. Requires KubeVirt 0.44 or later.
    FeaturesACPI and APICEnable ACPI or APIC. VM Launchpad enables these settings by default.
    FeaturesHyperV EnlightenmentsConfigure Windows VM settings, such as relaxed, VAPIC, and spinlocks.
    Clock and TimersClock ModeSelect UTC or timezone.
    Clock and TimersTimersConfigure PIT, RTC, HPET, or HyperV timers.
    MemoryHugepagesEnable large memory pages and set the page size to 2Mi or 1Gi.
    MemoryOvercommit Guest OverheadExclude per-VM overhead from the memory request.
    SecurityConfidential ComputingSelect AMD SEV, SEV-SNP, or Intel TDX when supported by the cluster.
    Host DevicesPCI or GPU passthroughAttach PCI or GPU devices discovered and registered in KubeVirt. Use Cluster Device Management if needed.
    warning

    On FIPS-enabled clusters, do not enable UEFI / EFI Boot unless you also enable Secure Boot. The FIPS-hardened virt-launcher image ships only the Secure Boot signed OVMF firmware, so a VM that requests EFI with Secure Boot disabled fails to start with the error EFI OVMF roms missing for booting in EFI mode with SecureBoot=false. Either enable Secure Boot, which requires a signed guest boot chain, or leave both settings disabled so that the VM uses BIOS.

    Persistent EFI Variables and Persistent TPM State require the VMPersistentState feature gate. If the wizard displays Requires the VMPersistentState feature gate under either option, add the gate on the KubeVirt Configuration page.

    If you enable either option, KubeVirt stores that state on a PersistentVolumeClaim (PVC). Secure Boot alone does not need one. The StorageClass for the PVC must support the Filesystem volume mode. KubeVirt uses the first StorageClass that it finds in the following order:

    • The StorageClass set in spec.configuration.vmStateStorageClass on the KubeVirt resource. To set it, select Open YAML on the KubeVirt Configuration page.

    • The StorageClass annotated with storageclass.kubevirt.io/is-default-virt-class: "true".

    • The cluster's default StorageClass.

    If KubeVirt finds none of these StorageClasses, the VM does not start.

    info

    The CPU Model drop-down menu lists only the models the cluster supports and preserves unsupported values rather than dropping them. Refer to CPU Model Field for details on dynamic discovery, caching, and the unavailable-model warnings.

  7. On the Lifecycle page, configure snapshot policy and Cloud-Init settings.

    The following table describes the snapshot policy options. Refer to Snapshot Policies for more information.

    Display Snapshot Policy settings.
    SettingDescription
    Snapshot PolicyUse None (no snapshot policy), or select a snapshot policy to attach to the VM after creation.
    CreateSelect Create to launch the Create Snapshot Policy mini-wizard.
    Display NameEnter the user-facing name for the snapshot policy.
    Resource NameEnter the Kubernetes resource name for the snapshot policy.
    DescriptionEnter an optional description for the snapshot policy.
    IntervalSelect the automatic snapshot interval. Intervals range from every hour to every seven days.
    Max RetentionEnter the number of snapshots to keep per VM. Shorter intervals and higher retention values can increase storage usage.
    info

    Snapshot policies define automatic snapshot schedules, including interval, retention count, and time window. VMs created from a template inherit the template's snapshot policy annotation if one is set.

    The following table describes the Cloud-Init options.

    Display Cloud-Init settings.
    SettingDescription
    Data source indicatorView the data source used by the VM. A ConfigDrive data source inherited from template badge appears when a template forces ConfigDrive.
    Install QEMU guest agent?Select Yes or No. This field is required before VM creation. Select Yes to install the guest agent through cloud-init.
    Use internal package repositoryKeep the internal VM Launchpad repository configured in the guest after the guest agent installation. This field appears only when guest agent installation is enabled.
    User DataEnter cloud-init user data with the Cloud-Init Editor. Linux cloud-init content typically begins with #cloud-config.
    Network DataOptionally enter Netplan v2 YAML for interfaces, static IPs, routes, and nameservers at first boot. If you assigned static bridge IPs in the Network step, VM Launchpad automatically generates and merges network data on submit. Use the Network Data field only for advanced overrides.
    warning

    If you enable guest agent installation, upload the qemu-guest-agent package for your operating system and architecture to the internal repository under Image Catalog > Packages before launching the VM. Otherwise, the agent installation fails. This reminder does not block VM creation.

    (Optional) Access the Cloud-Init Editor by selecting Cloud-Init Configuration under User Data. The editor supports the following user data input modes.

    Display the Cloud-Init editor.
    ModeDescription
    EditorType or paste the payload directly.
    TemplateSelect a cloud-init config from the Auto-Install Scripts catalog. The list is filtered to cloud-init entries only because auto-install installer scripts have no effect on a VM that boots from an already-installed disk.
    UploadLoad a .yaml or .txt file from your machine.
    URLFetch the payload from a reachable URL. Your browser performs the fetch.
    warning

    Cloud-init runs only at first boot. Changes to user data or network data after the VM boots do not run again unless you issue the cloud-init clean command and reboot.

  8. Select Finish to provision your VM.

Validate​

  1. From the left main menu of the VM Launchpad console, select Workloads > Virtual Machines.

  2. Locate your VM in the list. The status column displays Provisioning during VM creation and changes to Running after the VM starts.

  3. Select the VM to view its details, including IP address, the node the VM is running on, and metrics.

    info

    When the VM is running, you can change the CPU core count or CPU thread count, but you must restart the VM to apply the change. You can change the number of CPU sockets without restarting the VM, but this causes the VM to live migrate to another node in the cluster. You can also increase memory without a restart when the VM has Max Guest Memory set above its current memory. Refer to Manage VMs for details.

  4. Select the Console tab to open a noVNC-based remote console. Use the console to interact with the VM keyboard.

    Screenshot of a running VM console

Next Steps​

After your VM is running, refer to Manage VMs for day-to-day operations, such as starting and stopping VMs, live migration, hot-plugging volumes, editing the VM, snapshots, and guest-agent diagnostics.