During my work and evangelism with not only customers but also Microsoft geeks surrounding me, I’ve been asked if I’ve ever heard of deploying a hypervisor inside an Azure VM. It turns out a question: Why do you need to run a virtualization inside an already-virtualized environment which is so-called nested virtualization? Recently Microsoft announced the capability of nested virtualization back a week ago.
There would be some use cases where nested virtualization is helpful. One example is the lift-and-shift of non-Microsoft platform to Microsoft Azure. With a big infrastructure of VMware, for instance, it takes time to experiment, try and evaluate before moving because without nested virtualization you would have to convert VMware to Hyper-V compatible image before importing to Azure. Another possible use case is training facility deployment on a nested virtualization environment. Consider a case of SharePoint development training with bunch of Azure virtual machines with a dedicated Azure virtual where bunch of nested SharePoint virtualized machines. This sounds like an effective-cost approach doesn’t it. There is perhaps another common use case of container in Azure while Azure container service is limited from the capability perspective while nested virtualization is fully controlled. For a trial RedHat Enterprise deployment, it is a good news for MVP owning eligible subscription with 150$ limit.
Disclaimer: I have a very little experience on the technology of containerization in whether Docker or Azure.
By that announcement, I tried to provision Standard_D4S_V3 virtual machines running Windows Server 2016 Datacenter edition. Nested virtualization can be deployed on both virtual machine sizes: Dx_V3 and Ex_V3. As of this writing, V3 size is only available in US West 2, US East, Europe West and Southeast Asia Pacific.
I then deployed Hyper-V and provisioned a Windows XP on a nested virtual machine. The guidance I followed is described here. If you need more advanced with automation and control of nested virtual machine settings, go download and run this script on your Azure virtual machine.
I also tried to install VMWare Workstation Pro on the Azure virtual machine. However, during my nested virtual machine setup, I encountered with the incompatibility between VMWare and Hyper-V.
Trying several ways folks shared over the Internet to solve this error but I have no luck so far. From the pre-requisites we know that Azure nested virtualization currently supports Hyper-V host only.
- A Hyper-V host running Windows Server 2016 or Windows 10 Anniversary Update.
- A Hyper-V VM running Windows Server 2016 or Windows 10 Anniversary Update.
- A Hyper-V VM with configuration version 8.0 or greater.
- An Intel processor with VT-x and EPT technology.
Virtualization applications other than Hyper-V are not supported in Hyper-V virtual machines, and are likely to fail. This includes any software that requires hardware virtualization extensions (Source)
There are a couple of reasons I guess from Azure nested virtualization. The first thing is that Microsoft targets to non-Microsoft virtualization customers such as VMware, KVM or OpenStack. These types of customer have a comprehensive road map of lift-and-shift plan. It is not that easy to just convert everything to Microsoft stack. As mentioned earlier in this article, they need time to test and evaluate Azure offerings. The other thing around Azure nested virtualization is to aim to offer a complete enterprise cloud solution. This capability would be the sign of bare-metal cloud service offering for companies that need a dedicated IaaS cloud environment on Microsoft Azure to eliminate the concern of public-cloud security and shared underlying infrastructure while still taking advantages of infrastructure management and automation offering.
With Azure nested virtualization, Azure is going to compete directly with Oracle Cloud in the bare-metal cloud service