This is the multi-page printable view of this section. Click here to print.
Getting Started
- 1: About KubeOpsVM
- 2: About KubeOpsVM Licences
- 3: General Concepts of KubeOpsVM
- 4: Install KubeOps virtualization on a Dedicated Machine
1 - About KubeOpsVM
This article provides an overview of KubeOpsVM, a virtualization solution designed for Kubernetes-based environments. It explains how KubeOpsVM enables the operation and management of virtual machines alongside containerized workloads within a shared orchestration platform.
What Is KubeOpsVM?
KubeOpsVM is a virtualization platform that extends Kubernetes-based infrastructure to support virtual machines. It allows organizations to manage VM-based and container-based workloads within the same environment, using Kubernetes as the orchestration layer.
By consolidating these workload types on a single platform, KubeOpsVM reduces the need for separate virtualization and container management systems. This approach simplifies infrastructure operations, improves consistency across environments, and supports more efficient resource utilization.
Why KubeOpsVM Matters
Many organizations adopting cloud-native technologies must continue to operate existing applications that depend on traditional virtual machines. Managing these workloads separately from containerized services often increases operational complexity and creates fragmentation across tools, processes, and infrastructure.
KubeOpsVM addresses this challenge by enabling virtual machines to run within Kubernetes environments. This makes it possible to manage legacy and modern workloads through a common control plane, helping organizations streamline administration and support gradual modernization strategies.
Key Features Driving Innovation
KubeOpsVM distinguishes itself by delivering a robust virtualization experience through Kubernetes integration. Its primary features include:
- Unified Workload Management - Manage virtual machines and containerized workloads through a shared Kubernetes-based platform and operational model.
- Scalability - Scale virtual machines in response to changing demand by using Kubernetes scheduling and resource management capabilities.
- High Availability - Support highly available virtualized workloads in multi-node environments through Kubernetes self-healing, scheduling, and failover mechanisms.
- Resource Efficiency - Run virtualized and containerized workloads on the same infrastructure to improve resource utilization and operational efficiency.
A Vision for the Future
KubeOpsVM is designed for virtualization in cloud-native environments. It addresses the growing need to operate virtual machines alongside container-based workloads in Kubernetes, helping organizations connect existing systems with modern platform architectures. This supports a more practical and gradual path toward modernization.
Whether the goal is to maintain legacy applications, improve deployment consistency, or increase workload portability, KubeOpsVM offers a unified approach to running VMs within Kubernetes-based platforms. As cloud-native adoption continues to grow, KubeOpsVM is positioned to support future infrastructure models where virtualized and containerized workloads operate together more seamlessly.
2 - About KubeOpsVM Licences
KubeOpsVM functionality is available with the Compliance + VM licence.
When you create an account, you receive a free 30 day trial version of our licences.
| Functions | Compliance + VM |
|---|---|
| Cloud Native VM Hypervisor | ✓ |
| Price | Contact Sales |
3 - General Concepts of KubeOpsVM
This article explores the core concepts of KubeOpsVM, a virtualization solution that integrates with Kubernetes to manage virtual machines alongside containerized workloads. It highlights how KubeOpsVM bridges traditional VMs and cloud-native systems, offering scalability and streamlined orchestration for modern infrastructure.
What is the purpose of a Virtual Machine?
A virtual machine (VM) is a software-based environment that simulates a physical computer, enabling it to run an operating system and applications independently from the host machine. Its primary purpose is to optimize hardware usage by allowing multiple operating systems to run on a single device. This setup is crucial for tasks like software development, where developers can test applications in various environments without needing separate hardware.
Security and isolation are other key advantages, as VMs keep applications separate from the host system, reducing the risk of system-wide damage from potential threats. They also simplify disaster recovery, since entire VM states can be backed up, cloned, or transferred easily. Additionally, VMs provide flexibility by enabling cross-platform compatibility, allowing users to run different operating systems simultaneously. This feature supports legacy software that might not be compatible with modern systems, ensuring continued access to older applications.
Virtual machines are integral to cloud computing, IT infrastructure, and personal computing due to their scalability, flexibility, and efficiency.
How does KubeOpsVM work?
KubeOpsVM is like a “computer inside a computer.” It allows you to run an operating system (OS) and applications in a sandboxed environment, separate from your actual physical machine.
In the example shown, any VM can be hosted on any agent (worker or master) within the cluster.
A virtual machine does not necessarily have to run on a specific machine. Depending on the current requirements, the VM is deployed on the appropriate machine in the cluster. kubevirt takes over the complete administration - no further intervention is necessary.
One of the main advantages of KubeOps virtualization is the asynchronous use and access of a VM and the deployment and execution of the VM depending on the available resources or machines. This ensures that each VM can always work independently of workloads.
4 - Install KubeOps virtualization on a Dedicated Machine
This guide describes how to set up a Kubernetes-based virtualization environment by using kubevirt automated installation routines. The setup is performed on a physical or virtual machine and runs largely automatically, requiring only minimal user input.
As part of the installation, KubeVirt and additional KubeOps components, such as the KOSI package manager, are installed automatically on the target node.
KubeVirt provides the virtualization layer within Kubernetes and enables virtual machines to run as Kubernetes-managed resources.
System architecture after installation
After the installation is complete, the environment consists of:
-a single-node Kubernetes cluster
- one running node functioning as both the control-plane and worker node
- one virtual machine
ubuntu vmrunning in the namespacekubevirt - one preconfigured
ubuntuimage running on that virtual machine
The ubuntu image includes predefined login credentials.

A virtual machine is not permanently bound to a specific machine. In Kubernetes-based virtualization environments, VM placement depends on resource availability and scheduling decisions within the cluster. KubeVirt manages this placement and execution automatically, so no manual intervention is required during normal operation.
This behavior supports flexible resource usage and allows workloads to operate independently of a fixed host system.
One of the main advantages of KubeOps virtualization is the asynchronous use and access of a VM and the deployment and execution of the VM depending on the available resources or machines. This allows virtual machines to be scheduled independently based on available cluster resources.
Requirements
Before you begin the installation, ensure that you have the credentials for the following accounts available:
- your KubeOps.net account
- your Red Hat Subscription Manager account
For more information about Red Hat Subscription Manager, see the Red Hat online documentation.
System Requirements
The ISO can be installed on either a physical machine or a virtual machine. Ensure that the target system meets the following minimum requirements.
The KubeOps-VM ISO is based on Red Hat Enterprise Linux (RHEL). Only RHEL 9.6 and 9.7 are supported.
| CPU | 4 cores |
| Memory | 8 GB |
| Disk space | 50 GB of unformatted, non-partitioned disk space |
Actual system requirements depend on the number and type of virtual machines that will run on the system.
In general, the more virtual machines you plan to run, the more disk space is required. Depending on the expected workload, increasing CPU and memory resources may also be necessary.
Step 1 - Download the KubeOps-VM ISO File
Download the ISO file from the following location:
https://kubeops.net/users-only/welcome.
Step 2 - Install the KubeOps-VM ISO
During installation, you will be prompted to provide configuration values. Follow the on-screen instructions and enter the required information.
- Boot your machine from the ISO.
- Select Install Red Hat Enterprise to start the installation.

- Select the hard disk on which the system will be installed.

- Configure the network settings:
- Select your preferred networking device.
- Select whether the IP configuration is dynamic or static.
- Enter the IP address.
- Enter the subnet mask address.
- Enter the gateway address.
- Enter the DNS server address.
- Enter your preferred hostname. This will be the name of the machine. ( Do not use special characters in the hostname.)

- Select your preferred activation method for the Red Hat Subscription Manager.
- Select your preferred security method for the GRUB bootloader.
We recommend the option “random password” - this will set up the security automatically. For more information about the GRUB bootloader and its security, refer to the respective documentation. - Enter your KubeOps.net account credentials.
Notice The setup process may take several minutes. Do not shut down the machine while the installation is in progress.

- Follow the remaining on-screen instructions to complete the installation.
Step 3 - Login to the Control-plane Node on the Cluster
During setup using an ISO file, the control-plane node was automatically preconfigured with a user (root) and its password.
| User | ko-admin |
| Password | KubeOps2024 |
- Log in to the control-plane node remotely.
For example, usingssh. The first time you log in, you must use the preconfigured password (see above). Use the hostname or the IP address that you assigned in a previous step during the installation.
ssh ko-admin@[HOSTNAME]
or
ssh ko-admin@[IP ADDRESS]
-
At first login, you will be prompted to change the default password. ollow the on-screen instructions. After the password change is complete, you will be automatically logged out.
Notice During the first boot of the machine, additional software and parameters are configured in the background, such as the cluster setup and configuration. -
Login to the machine again using your new credentials.
-
Most kubeops software require root privileges. Switch to root user.
sudo -i
- To check the state of background configuration tasks, run the
journalctlcommand.
journalctl -u clustersetup.service
Keep this view open while the installation finishes.
Check your kubeops virtualization by using the kubectl get pods command.
kubectl get pods -n kubevirt
The installation is complete when the status of all pods is set to “Running”. For example:
Note: Pods in the
kubevirtnamespace may initially remain in thePendingstate. If this happens, you can either add worker nodes as described in How to join Nodes to a KubeOps Cluster or or remove the control-plane taint from the single node withkubectl taint nodes <control-plane-node-name> node-role.kubernetes.io/control-plane:NoSchedule-

- To change the password of the root user, run command:
passwd
Step 4 - Install the example VM
After the platform installation is complete, you can deploy the example virtual machine.
- Login to the machine using your updated credentials.
- Switch to root user as most kubeops software needs root privileges.
sudo -i
- Create a values file for the virtual machines:
Example:
ubuntuvmValues:
name: ubuntu-vm
namespace: kubevirt-vm
sshkeys:
- key: <public ssh key, p.e. id_rsa.pub file>
dataVolume:
storageClassName: rook-cephfs
source:
secret: kubeops-auth
In this example,these values are saved in the vmvalues.yaml file.
- Ensure that you are still logged in to KOSI using your kosi username. KOSI sessions remain valid for 24 hours, after that time you need to login again.
kosi login -u [USERNAME]
- Use the KOSI package manager to search for available software packages.
In this case, we restrict the search to KubeOps virtualization using the hub
kubeops-vmand filter forubuntu.
kosi search --hub kubeops-vm --ps ubuntu

- Install the package using the
kosi installcommand. The example VM configuration is namedkubevirt-ubuntu-vm
kosi install --hub kubeops-vm kubeops/kubevirt-ubuntu-vm:1.0.0 -f vmvalues.yaml --dname ubuntu
Create the required secret
Create a custom secret for image access:
kubectl create secret generic kubeops-auth --from-literal=accessKeyId=<kubeopsaccount> --from-literal=secretKey="<password-token for imagepullregistry>" --namespace=<namespace of vm>
Note: The image pull token is not the same as the account password. If the registry uses OIDC integration, for example with Keycloak, use the appropriate token instead of the user password.
Additional requirements for air-gapped environments
For an airgap installation,
- Use a domain name for Harbor.
- Do not use an IP address with a port
- Do not manually copy images to the nodes or load them with containerd
- Ensure that all required images are available through the configured registry
You may also need to create an image pull secret named kubeops-vm. This secret uses the same registry credentials as the kubeops-auth secret created by the KubeOps platform tool, like rook-ceph.
You can create it with the following command:
kubectl -n kubevirt create secret docker-registry kubeops-vm --docker-server=<registry for image pulling> --docker-username=<username of registry> --docker-password=<password-token for imagepullregistry>
Step 5 - Access the example virtual machine
After deployment, you can access the example virtual machine remotely from the control-plane node. For example, using ssh.
- Login to the machine using your updated credentials.
- Retrieve the IP address of your example VM with following command:
kubectl get vmi -A
This command lists all virtual machine instances. Since we only have one VM installed, the output looks something like this.
NAMESPACE NAME AGE PHASE IP NODENAME READY
kubevirt ubuntu-vm 22h Running 192.168.16.48 stackedadmin True
- Log in to the example VM remotely (e.g. using
ssh). Use the IP address from the previous step. Use the credentials of the runningubuntu imagefrom the table below.
ssh ubuntu@192.168.16.48
| User (ubuntu image) | ubuntu |
| Password (ubuntu image) | ubuntu |
Next Steps
For additional commands and operational tasks for KubeOps virtual machines, see Commandline Operations.