Krunvm – Create MicroVMs from OCI Images
github.com
github.com
One of the biggest advantages of this VMM is that programs have access to the network inside the VMM without the admin having to setup complex virtual bridges and so forth in the host in advance or use something like slirp. This is accomplished via TSI (Transparent Socket Impersonation).
Basically sockets in the guest are bridged to AF_VSOCK via the use of a patched linux kernel (when you build libkrunfw.so) when communicating outside the VM. See https://www.youtube.com/watch?v=EGV03THGrrw for more info on TSI.
My only concern is that TSI is currently not a feature available in Linux. When do the authors plan to upstream this into Linux proper? My understanding is that this was planned in 2021 but it is now 2022...
Does slirp support protos other than UDP and TCP? Apparently, TSI doesn't: https://github.com/containers/libkrun/blob/1af2e7236d1/READM...
I wonder if slirp4netns understands anything other than TCP/UDP/ICMP.
OTOH I don't think ping (ICMP) is possible with TSI (but maybe I needed to do some other config to make it work).
In summary though (others redacted):
# Goals
- Be compatible with a reasonable amount of workloads.
# Non-goals
- Be compatible with all kinds of workloads.Do you mean VM I/O can be very slow? I don't think containers should have any overhead, please correct me if I'm wrong though.
That's just Docker though, right? Does LXC or systemd-nspawn do that?
I’ve been working in a similar area recently and networking is an unfortunate stumbling block.
But I'm no expert, just my armchair take on things.
kube-virt[1] is a thing, though, that provides k8s orchestration for VMs. I don't see why you couldn't use krunvm microvms with that