{"id":1629,"date":"2024-05-31T14:48:38","date_gmt":"2024-05-31T14:48:38","guid":{"rendered":"http:\/\/patriciocerda.com\/?p=1629"},"modified":"2024-05-31T14:48:38","modified_gmt":"2024-05-31T14:48:38","slug":"red-hat-openshift-virtualization-4-15-how-to-run-in-a-nested-environment-with-software-emulation","status":"publish","type":"post","link":"https:\/\/patriciocerda.com\/?p=1629","title":{"rendered":"Red Hat OpenShift Virtualization (4.15) &#8211; How to run in a nested environment with software emulation"},"content":{"rendered":"<p>Hi all, the last year I&#8217;ve been running a lot of tests in my OpenShift lab environment, and I was quite curious about how OpenShift Virtualization works.\u00a0\u00a0 OpenShift Virtualization is a feature of Red Hat OpenShift Container Platform (OCP) that allows you to run and manage virtual machines alongside containers in the same OCP Cluster.<\/p>\n<p>As most of virtualization technologies like VMware, Hyper-V, KVM and others, OpenShift Virtualization requires hardware virtualization, which usually means that you need to use bare-metal servers for your OCP cluster.\u00a0 By default, OpenShift Virtualization uses the Linux Kernel Virtual Machine (KVM), which is a full-virtualization solution for Linux on x86 hardware. KVM uses the virtualization extensions Intel VT or AMD-V to enable device emulation.\u00a0 Of course, in a lab environment isn&#8217;t always possible to have physical servers available for this kind of tests, so we usually leverage nested virtualization, like when we want to run a virtual ESXi host on top of a physical ESXi host.<\/p>\n<p>One of the option we have, is to run our OCP cluster as VMs on top of VMware or KVM, and enable nested virtualization:<\/p>\n<ul>\n<li>VMware: <a href=\"https:\/\/docs.vmware.com\/en\/VMware-vSphere\/7.0\/com.vmware.vsphere.vm_admin.doc\/GUID-2A98801C-68E8-47AF-99ED-00C63E4857F6.html\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.vmware.com\/en\/VMware-vSphere\/7.0\/com.vmware.vsphere.vm_admin.doc\/GUID-2A98801C-68E8-47AF-99ED-00C63E4857F6.html<\/a><\/li>\n<li>KVM: <a href=\"https:\/\/docs.fedoraproject.org\/en-US\/quick-docs\/using-nested-virtualization-in-kvm\/index.html\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.fedoraproject.org\/en-US\/quick-docs\/using-nested-virtualization-in-kvm\/index.html<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>But what if we are trying to run an OCP cluster in a Cloud provider like AWS EC2, Azure VMs or Google Cloud Engine?\u00a0 In this case the situation is a bit more complicated, as we can&#8217;t just expose the Hardware Virtualization extensions, like Intel VT or AMD-V,\u00a0 to enable device emulation<\/p>\n<p>And well, that&#8217;s my case as I don&#8217;t have enough resources in my VMware-based homelab to run an OCP cluster, not even mention OCP Virtualization, so I&#8217;ve deployed an OpenShift Cluster on Google Cloud using GCE VM instances, which works perfectly fine until I tried to use OpenShift Virtualization of course :)<\/p>\n<p>In this kind of scenario you need to switch OpenShift Virtualization from its default of hardware virtualization to <strong>QEMU-based software emulation<\/strong>.\u00a0 Just then you will be able to run a virtual machine using OpenShift Virtualization, even in a non-bare metal instance such as GCE VM Instance.<\/p>\n<p>In this post I&#8217;ll explain how to enable Software Emulation in OpenShift Virtualization, to be able to run VMs when the default Hardware Virtualization isn&#8217;t available.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>NOTE<\/strong>: The following workaround is not supported by Red Hat, even for dev\/test\/sandbox environments.\u00a0\u00a0 For performance reasons, hardware virtualization, where the virtual machine uses the hardware directly, is\u00a0 always preferable over software virtualization in real-world implementations. Modern CPUs, memory, and hardware components are designed with hardware virtualization in mind.\u00a0\u00a0 Running VMs through OpenShift Virtualization&#8217;s software emulation method can result in performance degradation.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/patriciocerda.com\/?p=1629\/#The_Error\" >The Error<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/patriciocerda.com\/?p=1629\/#Pre-Requisites\" >Pre-Requisites:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/patriciocerda.com\/?p=1629\/#Procedure\" >Procedure<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"The_Error\"><\/span>The Error<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>I&#8217;ve been trying Red Hat OpenShift on Google Cloud, using Google Cloud VM instances, and of course it&#8217;s not possible to enable nested virtualization.\u00a0\u00a0 So, whenever I try to create and run a virtual machine on OpenShift Virtualization on top these Google Cloud VMs, OpenShift Virtualization will try to run this VM using the default hardware emulation, which of course will fail as this is a non-bare-metal instance of OpenShift Virtualization, and nested virtualization isn&#8217;t enabled.<\/p>\n<p>In that casse you will the following warning messages in the <strong>Virtualization &gt; Overview<\/strong> section:<\/p>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1631\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-300x167.png\" alt=\"\" width=\"456\" height=\"254\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-200x111.png 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-300x167.png 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-400x222.png 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-600x333.png 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-768x426.png 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-800x444.png 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-1024x569.png 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-1200x666.png 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40-1536x853.png 1536w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.01.40.png 1630w\" sizes=\"(max-width: 456px) 100vw, 456px\" \/><\/a><\/p>\n<p>If you check the details of the Virtual Machine status, you would see the Virtual Machine isn&#8217;t schedulable as the pod can&#8217;t find any suitable host, as we can see in the following image:<\/p>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1632\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-300x167.png\" alt=\"\" width=\"483\" height=\"269\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-200x111.png 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-300x167.png 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-400x222.png 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-600x333.png 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-768x426.png 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-800x444.png 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-1024x569.png 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-1200x666.png 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.02.32-1536x853.png 1536w\" sizes=\"(max-width: 483px) 100vw, 483px\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Pre-Requisites\"><\/span>Pre-Requisites:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This workaround has been tested on Red Hat OpenShift 4.15 installed on non-bare-metal instances like GCE VM instances, and it should works also for other Cloud providers like AWS or Azure.\u00a0 For older versions you can try the following options:<\/p>\n<ul>\n<li>RH OpenShift v4.4: <a href=\"https:\/\/developers.redhat.com\/blog\/2020\/09\/17\/how-to-switch-red-hat-openshift-virtualization-from-hardware-virtualization-to-software-emulation#hardware_versus_software_virtualization\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.redhat.com\/blog\/2020\/09\/17\/how-to-switch-red-hat-openshift-virtualization-from-hardware-virtualization-to-software-emulation#hardware_versus_software_virtualization<\/a><\/li>\n<li>RH OpenShift v4.5: <a href=\"https:\/\/developers.redhat.com\/blog\/2020\/08\/28\/enable-openshift-virtualization-on-red-hat-openshift#step_2__create_a_hyperconverged_cluster\" target=\"_blank\" rel=\"noopener\">https:\/\/developers.redhat.com\/blog\/2020\/08\/28\/enable-openshift-virtualization-on-red-hat-openshift#step_2__create_a_hyperconverged_cluster<\/a><\/li>\n<\/ul>\n<p>In addition, OpenShift Virtualization has to be enabled and available in the default namespace, <code>openshift-cnv<\/code>.\u00a0 You can enable OpenShift Virtualization by using the Operator as you can see in the following link: <a href=\"https:\/\/docs.openshift.com\/container-platform\/4.15\/virt\/install\/installing-virt.html#virt-installing-virt-operator_installing-virt\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.openshift.com\/container-platform\/4.15\/virt\/install\/installing-virt.html#virt-installing-virt-operator_installing-virt<\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Procedure\"><\/span>Procedure<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>For older versions of OpenShift Virtualization (as described in Pre-requisites), it was possible to enable software emulation by changing the KubeVirt configmap, or the HyperConverged cluster in the OpenShift Virtualization operator, but these options aren&#8217;t available anymore in the last release (4.15).<\/p>\n<p>So, after some hours of research, and burning my brain, I&#8217;ve found this GitHub repository for the HyperConverged Cluster Operator and how to customize it: <a href=\"https:\/\/github.com\/kubevirt\/hyperconverged-cluster-operator\/tree\/main\/deploy\/kustomize\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/kubevirt\/hyperconverged-cluster-operator\/tree\/main\/deploy\/kustomize<\/a><\/p>\n<p>From here, the workaround is quite simple by modifying the Subscription artifact just like we can see in the following link about KVM Emulation: <a href=\"https:\/\/github.com\/kubevirt\/hyperconverged-cluster-operator\/blob\/main\/deploy\/kustomize\/kvm_emulation\/subscription.patch.yaml\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/kubevirt\/hyperconverged-cluster-operator\/blob\/main\/deploy\/kustomize\/kvm_emulation\/subscription.patch.yaml<\/a><\/p>\n<ul>\n<li>Edit the HyperConverged subscription with the following command:<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_1\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_1\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_1\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">kubectl edit Subscription kubevirt-hyperconverged -n openshift-cnv<\/textarea><\/div>\n<ul>\n<li>At this point, all we need to do, is to add the following environment variable in the spec section:<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_2\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_2\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_2\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">apiVersion: operators.coreos.com\/v1alpha1\nkind: Subscription\nmetadata:\n  labels:\n    operators.coreos.com\/kubevirt-hyperconverged.openshift-cnv: \"\"\n  name: kubevirt-hyperconverged\n  namespace: openshift-cnv\nspec:\n  channel: stable\n  config:\n    env:\n    - name: KVM_EMULATION\n      value: \"true\"<\/textarea><\/div>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1634\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-300x226.png\" alt=\"\" width=\"490\" height=\"369\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-200x151.png 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-300x226.png 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-400x301.png 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-600x452.png 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-768x578.png 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-800x603.png 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-1024x771.png 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-1200x904.png 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14-1536x1157.png 1536w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.04.14.png 1540w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>After saving the changes, these are applied immediately and there is no need of any kind of reboot or restart.<\/p>\n<p>&nbsp;<\/p>\n<p>So of course, if now I try to create and run a new Virtual Machine, you can see there isn&#8217;t any kind of error and the VM is up and running, and the guest operating system booting without issues:<\/p>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1635\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-300x175.png\" alt=\"\" width=\"561\" height=\"327\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-200x116.png 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-300x175.png 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-400x233.png 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-600x349.png 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-768x447.png 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-800x465.png 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-1024x596.png 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-1200x698.png 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/Captura-de-pantalla-2024-05-31-a-las-15.44.40-1536x893.png 1536w\" sizes=\"(max-width: 561px) 100vw, 561px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>As you can see, it&#8217;s quite simple procedure so you can test OpenShift Virtualization without bare-metal instances :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi all, the last year I&#8217;ve been running a lot<\/p>\n","protected":false},"author":1,"featured_media":1636,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[27,68,92,8],"tags":[41,32,31,69,93,94],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Red Hat OpenShift Virtualization (4.15) - How to run in a nested environment with software emulation - vLatam<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/patriciocerda.com\/?p=1629\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Red Hat OpenShift Virtualization (4.15) - How to run in a nested environment with software emulation - vLatam\" \/>\n<meta property=\"og:description\" content=\"Hi all, the last year I&#8217;ve been running a lot\" \/>\n<meta property=\"og:url\" content=\"https:\/\/patriciocerda.com\/?p=1629\" \/>\n<meta property=\"og:site_name\" content=\"vLatam\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-31T14:48:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"pcerda\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"pcerda\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/patriciocerda.com\/?p=1629\",\"url\":\"https:\/\/patriciocerda.com\/?p=1629\",\"name\":\"Red Hat OpenShift Virtualization (4.15) - How to run in a nested environment with software emulation - vLatam\",\"isPartOf\":{\"@id\":\"https:\/\/patriciocerda.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/patriciocerda.com\/?p=1629#primaryimage\"},\"image\":{\"@id\":\"https:\/\/patriciocerda.com\/?p=1629#primaryimage\"},\"thumbnailUrl\":\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png\",\"datePublished\":\"2024-05-31T14:48:38+00:00\",\"author\":{\"@id\":\"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a\"},\"breadcrumb\":{\"@id\":\"https:\/\/patriciocerda.com\/?p=1629#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/patriciocerda.com\/?p=1629\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/patriciocerda.com\/?p=1629#primaryimage\",\"url\":\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png\",\"contentUrl\":\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/patriciocerda.com\/?p=1629#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/patriciocerda.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Red Hat OpenShift Virtualization (4.15) &#8211; How to run in a nested environment with software emulation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/patriciocerda.com\/#website\",\"url\":\"https:\/\/patriciocerda.com\/\",\"name\":\"vLatam\",\"description\":\"El Blog de Patricio Cerda\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/patriciocerda.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a\",\"name\":\"pcerda\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/patriciocerda.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1779195224\",\"contentUrl\":\"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1779195224\",\"caption\":\"pcerda\"},\"url\":\"https:\/\/patriciocerda.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Red Hat OpenShift Virtualization (4.15) - How to run in a nested environment with software emulation - vLatam","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/patriciocerda.com\/?p=1629","og_locale":"en_US","og_type":"article","og_title":"Red Hat OpenShift Virtualization (4.15) - How to run in a nested environment with software emulation - vLatam","og_description":"Hi all, the last year I&#8217;ve been running a lot","og_url":"https:\/\/patriciocerda.com\/?p=1629","og_site_name":"vLatam","article_published_time":"2024-05-31T14:48:38+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png","type":"image\/png"}],"author":"pcerda","twitter_card":"summary_large_image","twitter_misc":{"Written by":"pcerda","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/patriciocerda.com\/?p=1629","url":"https:\/\/patriciocerda.com\/?p=1629","name":"Red Hat OpenShift Virtualization (4.15) - How to run in a nested environment with software emulation - vLatam","isPartOf":{"@id":"https:\/\/patriciocerda.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/patriciocerda.com\/?p=1629#primaryimage"},"image":{"@id":"https:\/\/patriciocerda.com\/?p=1629#primaryimage"},"thumbnailUrl":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png","datePublished":"2024-05-31T14:48:38+00:00","author":{"@id":"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a"},"breadcrumb":{"@id":"https:\/\/patriciocerda.com\/?p=1629#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/patriciocerda.com\/?p=1629"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/patriciocerda.com\/?p=1629#primaryimage","url":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png","contentUrl":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/patriciocerda.com\/?p=1629#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/patriciocerda.com\/"},{"@type":"ListItem","position":2,"name":"Red Hat OpenShift Virtualization (4.15) &#8211; How to run in a nested environment with software emulation"}]},{"@type":"WebSite","@id":"https:\/\/patriciocerda.com\/#website","url":"https:\/\/patriciocerda.com\/","name":"vLatam","description":"El Blog de Patricio Cerda","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/patriciocerda.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a","name":"pcerda","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/patriciocerda.com\/#\/schema\/person\/image\/","url":"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1779195224","contentUrl":"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1779195224","caption":"pcerda"},"url":"https:\/\/patriciocerda.com\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2024\/05\/IntroBlog1629.png","_links":{"self":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts\/1629"}],"collection":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1629"}],"version-history":[{"count":5,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts\/1629\/revisions"}],"predecessor-version":[{"id":1639,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts\/1629\/revisions\/1639"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/media\/1636"}],"wp:attachment":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}