<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>KubeOpsDoku – Getting Started</title>
    <link>https://docs.kubeops.net/kubeopsvm/getting-started/</link>
    <description>Recent content in Getting Started on KubeOpsDoku</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="https://docs.kubeops.net/kubeopsvm/getting-started/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Kubeopsvm: About KubeOpsVM</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/about-kubeopsvm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/about-kubeopsvm/</guid>
      <description>
        
        
        &lt;p&gt;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.&lt;/p&gt;
&lt;h1 id=&#34;what-is-kubeopsvm&#34;&gt;What Is KubeOpsVM?&lt;/h1&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h1 id=&#34;why-kubeopsvm-matters&#34;&gt;Why KubeOpsVM Matters&lt;/h1&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h1 id=&#34;key-features-driving-innovation&#34;&gt;Key Features Driving Innovation&lt;/h1&gt;
&lt;p&gt;KubeOpsVM distinguishes itself by delivering a robust virtualization experience through Kubernetes integration. Its primary features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unified Workload Management&lt;/strong&gt; - Manage virtual machines and containerized workloads through a shared Kubernetes-based platform and operational model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability&lt;/strong&gt; - Scale virtual machines in response to changing demand by using Kubernetes scheduling and resource management capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High Availability&lt;/strong&gt; - Support highly available virtualized workloads in multi-node environments through Kubernetes self-healing, scheduling, and failover mechanisms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource Efficiency&lt;/strong&gt; - Run virtualized and containerized workloads on the same infrastructure to improve resource utilization and operational efficiency.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;a-vision-for-the-future&#34;&gt;A Vision for the Future&lt;/h1&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: About KubeOpsVM Licences</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/about-kubeops-vm-licences/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/about-kubeops-vm-licences/</guid>
      <description>
        
        
        &lt;p&gt;KubeOpsVM functionality is available with the &lt;strong&gt;Compliance + VM&lt;/strong&gt; licence.&lt;/p&gt;
&lt;p&gt;When you create an account, you receive a free 30 day trial version of our licences.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Functions&lt;/strong&gt;&lt;/th&gt;
&lt;th style=&#34;text-align:center&#34;&gt;&lt;strong&gt;Compliance + VM&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Native VM Hypervisor&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:center&#34;&gt;&lt;strong&gt;&lt;a href=&#34;https://kubeops.net/contact&#34;&gt;Contact Sales&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: General Concepts of KubeOpsVM</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/general-concepts-of-kubeopsvm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/general-concepts-of-kubeopsvm/</guid>
      <description>
        
        
        &lt;p&gt;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.&lt;/p&gt;
&lt;h1 id=&#34;what-is-the-purpose-of-a-virtual-machine&#34;&gt;What is the purpose of a Virtual Machine?&lt;/h1&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Virtual machines are integral to cloud computing, IT infrastructure, and personal computing due to their scalability, flexibility, and efficiency.&lt;/p&gt;
&lt;h1 id=&#34;how-does-kubeopsvm-work&#34;&gt;How does KubeOpsVM work?&lt;/h1&gt;
&lt;p&gt;KubeOpsVM is like a &amp;ldquo;computer inside a computer.&amp;rdquo; It allows you to run an operating system (OS) and applications in a sandboxed environment, separate from your actual physical machine.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/KubeVirtUebersicht.svg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In the example shown, any VM can be hosted on any agent (worker or master) within the cluster.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Install KubeOps virtualization on a Dedicated Machine</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/install-kubeops-virtualisation-on-a-dedicated-machine/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/install-kubeops-virtualisation-on-a-dedicated-machine/</guid>
      <description>
        
        
        &lt;p&gt;This guide describes how to set up a Kubernetes-based virtualization environment by using &lt;strong&gt;kubevirt&lt;/strong&gt; automated installation routines. The setup is performed on a physical or virtual machine and runs largely automatically, requiring only minimal user input.&lt;/p&gt;
&lt;p&gt;As part of the installation, &lt;code&gt;KubeVirt&lt;/code&gt; and additional KubeOps components, such as the &lt;code&gt;KOSI package manager&lt;/code&gt;, are installed automatically on the target node.&lt;/p&gt;
&lt;p&gt;KubeVirt provides the virtualization layer within Kubernetes and enables virtual machines to run as Kubernetes-managed resources.&lt;/p&gt;
&lt;p&gt;System architecture after installation&lt;/p&gt;
&lt;p&gt;After the installation is complete, the environment consists of:&lt;/p&gt;
&lt;p&gt;-a single-node Kubernetes cluster&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one running node functioning as both the control-plane and worker node&lt;/li&gt;
&lt;li&gt;one virtual machine &lt;code&gt;ubuntu vm&lt;/code&gt; running in the namespace &lt;code&gt;kubevirt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;one preconfigured &lt;code&gt;ubuntu&lt;/code&gt; image running on that virtual machine&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;ubuntu&lt;/code&gt; image includes predefined login credentials.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubevirtvm-iso-install-rhel-9-6.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  &lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;This behavior supports flexible resource usage and allows workloads to operate independently of a fixed host system.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;

  
&lt;/div&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;p&gt;Before you begin the installation, ensure that you have the credentials for the following accounts available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your &lt;a href=&#34;https://kubeops.net/login&#34;&gt;KubeOps.net account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;your &lt;strong&gt;Red Hat Subscription Manager account&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information about Red Hat Subscription Manager, see the &lt;a href=&#34;https://docs.redhat.com/en/documentation/subscription_central/1-latest/html/getting_started_with_rhel_system_registration/adv-reg-rhel-using-rhsm_&#34;&gt;Red Hat online documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;system-requirements&#34;&gt;System Requirements&lt;/h3&gt;
&lt;p&gt;The ISO can be installed on either a physical machine or a virtual machine. Ensure that the target system meets the following minimum requirements.&lt;/p&gt;
&lt;p&gt;The KubeOps-VM ISO is based on Red Hat Enterprise Linux (RHEL). Only RHEL 9.6 and 9.7 are supported.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;4 cores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disk space&lt;/td&gt;
&lt;td&gt;50 GB of unformatted, non-partitioned disk space&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  &lt;p&gt;Actual system requirements depend on the number and type of virtual machines that will run on the system.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;

  
&lt;/div&gt;
&lt;h2 id=&#34;step-1---download-the-kubeops-vm-iso-file&#34;&gt;Step 1 - Download the KubeOps-VM ISO File&lt;/h2&gt;
&lt;p&gt;Download the ISO file from the following location:&lt;br&gt;
&lt;a href=&#34;https://kubeops.net/users-only/welcome&#34;&gt;https://kubeops.net/users-only/welcome&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;step-2---install-the-kubeops-vm-iso&#34;&gt;Step 2 - Install the KubeOps-VM ISO&lt;/h2&gt;
&lt;p&gt;During installation, you will be prompted to provide configuration values. Follow the on-screen instructions and enter the required information.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boot your machine from the ISO.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Install Red Hat Enterprise&lt;/strong&gt; to start the installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-vm-start-iso-install.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Select the hard disk on which the system will be installed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-iso-install-select-harddisk.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Configure the network settings:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Select your preferred &lt;strong&gt;networking device&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select whether the IP configuration is &lt;strong&gt;dynamic&lt;/strong&gt; or &lt;strong&gt;static&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;IP address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;subnet mask address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;gateway address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;DNS server address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter your preferred &lt;strong&gt;hostname&lt;/strong&gt;. This will be the name of the machine.
( Do not use special characters in the hostname.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-iso-network.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Select your preferred activation method for the Red Hat Subscription Manager.&lt;/li&gt;
&lt;li&gt;Select your preferred security method for the GRUB bootloader.&lt;br&gt;
We recommend the option &amp;ldquo;random password&amp;rdquo; - this will set up the security automatically. For more information about the GRUB bootloader and its security, refer to the respective documentation.&lt;/li&gt;
&lt;li&gt;Enter your &lt;strong&gt;KubeOps.net account&lt;/strong&gt; credentials.
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  The setup process may take several minutes. Do not shut down the machine while the installation is in progress.
  
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kosi-login-kubeops-iso.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;Follow the remaining on-screen instructions to complete the installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;step-3---login-to-the-control-plane-node-on-the-cluster&#34;&gt;Step 3 - Login to the Control-plane Node on the Cluster&lt;/h2&gt;
&lt;p&gt;During setup using an ISO file, the control-plane node was automatically preconfigured with a user (root) and its password.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ko-admin&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password&lt;/td&gt;
&lt;td&gt;&lt;code&gt;KubeOps2024&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ol&gt;
&lt;li&gt;Log in to the control-plane node remotely.&lt;br&gt;
For example, using &lt;code&gt;ssh&lt;/code&gt;. The first time you log in, you must use the preconfigured password (see above). Use the &lt;strong&gt;hostname&lt;/strong&gt; or the &lt;strong&gt;IP address&lt;/strong&gt; that you assigned in a previous step during the installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh ko-admin@&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;HOSTNAME&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh ko-admin@&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;IP ADDRESS&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;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.
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  During the first boot of the machine, additional software and parameters are configured in the background, such as the cluster setup and configuration.
  
&lt;/div&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login to the machine again using your new credentials.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Most kubeops software require root privileges. Switch to root user.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;To check the state of background configuration tasks, run the &lt;code&gt;journalctl&lt;/code&gt; command.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;journalctl -u clustersetup.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Keep this view open while the installation finishes.&lt;/p&gt;
&lt;p&gt;Check your kubeops virtualization by using the &lt;code&gt;kubectl get pods&lt;/code&gt; command.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl get pods -n kubevirt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The installation is complete when the status of all pods is set to “Running”. For example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: Pods in the &lt;code&gt;kubevirt&lt;/code&gt; namespace may initially remain in the &lt;code&gt;Pending&lt;/code&gt; state. If this happens, you can either add worker nodes as described in &lt;a href=&#34;../how-to-guides/how-to-join-nodes-to-a-kubeops-cluster/&#34;&gt;How to join Nodes to a KubeOps Cluster&lt;/a&gt; or  or remove the control-plane taint from the single node with &lt;code&gt; kubectl taint nodes &amp;lt;control-plane-node-name&amp;gt; node-role.kubernetes.io/control-plane:NoSchedule-&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeopsvm-check-kubevirt-installation.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;To change the password of the root user, run command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;passwd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-4---install-the-example-vm&#34;&gt;Step 4 - Install the example VM&lt;/h2&gt;
&lt;p&gt;After the platform installation is complete, you can deploy the example virtual machine.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login to the machine using your updated credentials.&lt;/li&gt;
&lt;li&gt;Switch to root user as most kubeops software needs root privileges.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Create a values file for the virtual machines:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ubuntuvmValues&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ubuntu-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kubevirt-vm &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;sshkeys&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;key&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;&amp;lt;public ssh key, p.e. id_rsa.pub file&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;dataVolume&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;storageClassName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;source&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;secret&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kubeops-auth&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this example,these values are saved in the &lt;code&gt;vmvalues.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi login -u &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;USERNAME&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Use the KOSI package manager to search for available software packages.
In this case, we restrict the search to KubeOps virtualization using the hub &lt;code&gt;kubeops-vm&lt;/code&gt; and filter for &lt;code&gt;ubuntu&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi search --hub kubeops-vm --ps ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-iso-install-search-kosi-kubeopsvm.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Install the package using the &lt;code&gt;kosi install&lt;/code&gt; command. The example VM configuration is named &lt;code&gt;kubevirt-ubuntu-vm&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi install --hub kubeops-vm kubeops/kubevirt-ubuntu-vm:1.0.0 -f vmvalues.yaml --dname ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Create the required secret&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create a custom secret for image access:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl create secret generic kubeops-auth --from-literal=accessKeyId=&amp;lt;kubeopsaccount&amp;gt; --from-literal=secretKey=&amp;#34;&amp;lt;password-token for imagepullregistry&amp;gt;&amp;#34; --namespace=&amp;lt;namespace of vm&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Additional requirements for air-gapped environments&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For an &lt;strong&gt;airgap&lt;/strong&gt; installation,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a domain name for Harbor.&lt;/li&gt;
&lt;li&gt;Do &lt;strong&gt;not&lt;/strong&gt; use an IP address with a port&lt;/li&gt;
&lt;li&gt;Do &lt;strong&gt;not&lt;/strong&gt; manually copy images to the nodes or load them with containerd&lt;/li&gt;
&lt;li&gt;Ensure that all required images are available through the configured registry&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You may also need to create an image pull secret named &lt;code&gt;kubeops-vm&lt;/code&gt;. This secret uses the same registry credentials as the &lt;code&gt;kubeops-auth&lt;/code&gt; secret created by the KubeOps platform tool, like rook-ceph.&lt;/p&gt;
&lt;p&gt;You can create it with the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl -n kubevirt create secret docker-registry kubeops-vm --docker-server&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;registry &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; image pulling&amp;gt; --docker-username&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;username of registry&amp;gt; --docker-password&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;password-token &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; imagepullregistry&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-5---access-the-example-virtual-machine&#34;&gt;Step 5 - Access the example virtual machine&lt;/h2&gt;
&lt;p&gt;After deployment, you can access the example virtual machine remotely from the control-plane node. For example, using &lt;code&gt;ssh&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login to the machine using your updated credentials.&lt;/li&gt;
&lt;li&gt;Retrieve the IP address of your example VM with following command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get vmi -A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command lists all virtual machine instances. Since we only have one VM installed, the output looks something like this.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NAMESPACE   NAME         AGE   PHASE     IP              NODENAME       READY

kubevirt    ubuntu-vm   22h   Running   192.168.16.48   stackedadmin   True
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Log in to the example VM remotely (e.g. using &lt;code&gt;ssh&lt;/code&gt;). Use the IP address from the previous step. Use the credentials of the running &lt;code&gt;ubuntu image&lt;/code&gt; from the table below.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh ubuntu@192.168.16.48
&lt;/code&gt;&lt;/pre&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User (ubuntu image)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ubuntu&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password (ubuntu image)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ubuntu&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;For additional commands and operational tasks for KubeOps virtual machines, see &lt;a href=&#34;../../reference/commandline-operations&#34;&gt;Commandline Operations&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
