Hyper: Make VM Runs Like Container Xu Wang <xu@hyper.sh> Hyper HQ
Agenda • Lesson learned from docker • Hyper: App-centric VM • Hyper and Xen • Next step
Docker Seems to Beat VM Everywhere • Docker announced in 2013 and release 1.0 in 2014 • Both AWS and Google provide Docker service in 2014, ECS and GKE • Several Linux distros for Docker • Hot in both VC and developer • ……
Lessons Learned from Docker • Docker is amazing • It build, ship, and run apps • Docker is not simply a new container • At the very beginning, Docker = LXC (runtime) + AUFS (image) • The amazing part: Docker is app-centric • People need run app, rather than a traditional OS • The critique of virtual machine is about "machine" rather than "virtual"
The Critique of VM • The critique of virtual machine is about " machine " rather than " virtual " • Why not make an App-Centric VM
Hyper: App-Centric VM • Hyper = Hypervisor + Docker Image
How It Works • In short: change the Docker container runtime to hypervisor . • A bit more detailed: • Maintain Images, volumes in host • Launch guest with a slim kernel and a special initrd (hyperstart) • Pass images, volumes, nic to guest • When Init ready, give init a spec of containers to run on it • Init mount images and run processes as described in the spec • Then it works.
The Architecture �� �� Pod App, App, App, App, (Docker Image) (Docker Image) (Docker Image) (Docker Image) Initrd:,Hyperstart Initrd:,Hyperstart Hyperd Light,Kernel,on,Hypervisor Light,Kernel,on,Hypervisor ����
Compare with Container
Hyper is Hypervisor-Agnostic • Currently, support: Qemu/KVM, Xen, and VirtualBox • Xen and KVM are the most widely adopted cloud hypervisors • VirtualBox is an open source cross platform hypervisor • Hyper introduce a hypervisor abstract layer, a Hypervisor driver should have • device hot-plug • serial ports for init communication, tty, and optional console • better to have filesystem share, which is massively used by Docker. • Xen 4.5 support is included in Hyper 0.2 in July
Xen Support in Hyper • Hyper use libxenlight • Hyper wraps (part of) libxenlight with Go • Hyper use Xen FV currently • Pros: • Xen HVM in 4.5 allow users specify kernel and initrd • Qemu in Xen HVM support virtio, and we could share filesystem with guest through 9p-virtio • Cons: • HVM boot is much slower than PV • PVH does not have emulated device (such as PCI), can not work with virtio
Next Step • Better support for hypervisors • Support qboot, pflash in Xen, to accelerate the boot • Enable filesystem share in PVH mode • Reduce memory consumption with persistent memory technology • Towards unikernel (?) • Runv • hyper runv is a project to run OCI spec on hypervisor • has announced and listed in OCI implementation list: • https://github.com/opencontainers/specs/blob/master/implementations.md • HyperStack • Integrate hyper with OpenStack and Kubernetes • Hyper runs images in VM, no need to run in VM as Docker • Kubernetes can do global scheduling • OpenStack has well adopted SDN and Storage API: Neutron and Cinder
Contribution are Welcome https://hyper.sh
Recommend
More recommend