I think I found a workaround.
In case anyone else encounters this issue, modify /var/lib/one/remotes/vnm/vnm_driver.rb . Find this:
def detect_hypervisor
lsmod = `#{VNMNetwork::COMMANDS[:lsmod]}`
xen_file = "/proc/xen/capabilities"
kvm_dir = "/sys/class/misc/kvm"
if File.exists?(xen_file)
"xen"
elsif lsmod.match(/kvm/) || File.exists?(kvm_dir)
"kvm"
else
nil
end
end
and replace it with this
def detect_hypervisor
lsmod = `#{VNMNetwork::COMMANDS[:lsmod]}`
xen_file = "/proc/xen/capabilities"
kvm_dir = "/sys/class/misc/kvm"
if File.exists?(xen_file)
"xen"
else
"kvm"
end
end
Here @ruben already explained why this happened. In this case, I’m using nested virtualization (node is a KVM virtual machine instead of a physical machine), this could be the reason why lsmod | grep kvm comes out empty.