cncf-toc/proposals/RunV + hyperstart
Ken Owens 397eabe1fd Create RunV + hyperstart
Incorporating input from Hyper Contributors. Ready for TOC Review
2017-06-13 16:05:07 -05:00

138 lines
5.3 KiB
Text

## Project description (what it does, why it is valuable, origin and history)
`runV` is a hypervisor-based container runtime implementation for [OCI](https://github.com/opencontainers/runtime-spec).
It uses hypervisors (KVM, Xen, etc.), instead of Cgroup/Namespace to spawn and run containers.
runV is able to launch a container image (Docker, OCI, etc.) into a micro VM in 100ms,
and still keeps the hardware-enforced isolation in virtualization. The combination allows container to replace
traditional VM as the building block for future cloud, which is container-native and application-centric.
`hyperstart` is a independent component for `runV` which is used as init service (PID=1) inside the VM sandbox to handle
commands from outside world. This is the key to hypervisor based container to match the design and behavior of Linux container.
'runV` is integrated with [Kubernetes](https://github.com/kubernetes/features/blob/master/release-1.6/release-notes-draft.md#node-components-1 ) as an plug-able secure CRI runtime to launch micro VM as Pod. Also, `runV` can work with `containerd` to start secure container. Besides security and isolation, `runV` also brings greater workload compatibility (kernel module, kernel version, Bring-Your-Own-Kernel) to multi-tenant environment.
* statement on alignment with CNCF charter mission
`runV` tries to enable native hypervisor-based runtime in Kubernetes and CNCF community in cloud native way. This is a important
supplement to current ecosystem especially considering the coming soon roadmaps including hard multi-tenancy, container security,
and legacy application adoption. By closely working with CNI, CRI, containerd, Prometheus etc, `runV` is looking forward to fostering
the growth of CNCF community to a wider area.
* sponsor from TOC - Ken Owens
* preferred maturity level - Incubator
* license - Apache 2
* source control - GitHub
https://github.com/hyperhq/runv
https://github.com/hyperhq/hyperstart
* external dependencies (including licenses)
`runV` only has very limited external dependencies which are mostly used as utils:
```
github.com/RoaringBitmap/roaring Apache 2.0
github.com/Sirupsen/logrus MIT
github.com/cloudfoundry/gosigar Apache 2.0
github.com/urfave/cli MIT
github.com/docker/docker/integration-cli/checker Apache 2.0
github.com/docker/docker/pkg/longpath Apache 2.0
github.com/docker/docker/pkg/mount Apache 2.0
github.com/docker/docker/pkg/reexec Apache 2.0
github.com/docker/docker/pkg/symlink Apache 2.0
github.com/docker/docker/pkg/system Apache 2.0
github.com/docker/go-units Apache 2.0
github.com/go-check/check BSD
github.com/golang/glog Apache 2.0
github.com/golang/protobuf BSD
github.com/golang/snappy Apache 2.0
github.com/hyperhq/hypercontainer-utils/hlog Apache 2.0
github.com/kardianos/osext BSD
github.com/kr/pty MIT
github.com/mschoch/smat Apache 2.0
github.com/opencontainers/runc/libcontainer/utils Apache 2.0
github.com/opencontainers/runtime-spec/specs-go Apache 2.0
github.com/philhofer/fwd MIT
github.com/rgbkrk/libvirt-go MIT
github.com/tinylib/msgp/msgp MIT
github.com/vdemeester/shakers Apache 2.0
github.com/vishvananda/netlink Apache 2.0
github.com/vishvananda/netns Apache 2.0
github.com/willf/bitset BSD 3
golang.org/x/net/ BSD 3
golang.org/x/sys/unix BSD 3
google.golang.org/grpc BSD 3
```
`hyperstart` is a tiny C implemented program which have no external dependency except Linux kernel.
* initial committers (how long working on project)
Lai Jiangshan @laijs
Gao Feng @gao-feng
Wang Xu @gnawux
All working on `runV` and `hyperstart` for 1.5+ years, with write permission.
* infrastructure requests (CI / CNCF Cluster): None
* communication channels (slack, irc, mailing lists)
* Mailing list: [hyper-user](https://groups.google.com/forum/#!forum/hyper-user)
* Slack: https://slack.hyper.sh
* issue tracker - GitHub
https://github.com/hyperhq/runv/issues
https://github.com/hyperhq/hyperstart/issues
* website - https://github.com/hyperhq/runv
* release methodology and mechanics
The latest stable release for runV is [0.8.1](https://github.com/hyperhq/runv/releases/tag/v0.8.1), and there have been 8 releases.
We have a 2~3 months scheduled release period, which depends on the changes in 5 main aspects:
1. CRI spec
2. OCI runtime & image spec
3. Notable change in Kubernetes `Node` or `containerd`
4. Notable change in CNI spec
5. Notable change related to hypervisor related library
The release tar file can be downloaded via: https://github.com/hyperhq/runv/releases
The latest stable release for hyperstart is [0.8.1](https://github.com/hyperhq/runv/releases/tag/v0.8.1), and there have been 10 releases.
We also have a 2~3 months scheduled release period, which depends on the changes in 3 main aspects:
1. CRI requirement
2. runV requirement
3. Notable change related to hypervisor related library
* social media accounts
@hyper_sh
* community size and any existing sponsorship
runV:
* 1034 commits
* 50 forks
* 22 Contributors
* 259 Stars
* 8 releases
* 300+ slack members
hyperstart:
* 694 commits
* 44 forks
* 23 Contributors
* 81 Stars
* 10 releases
Huawei contributed engineer time to `runV` and `hyperstart` to integrate them with containerd and Docker.
Kontron AG, a German embedded computer manufacture donated a cluster for `runV` maintainers to test `runV` + Kubernetes + OpenStack for NFV workloads.
Intel OTC contributed engineer time to improve and use `hyperstart`