-
Notifications
You must be signed in to change notification settings - Fork 367
Runtime merge proposal #33
Description
Problem Statement
The Kata Containers project is a merge of 2 hardware virtualization based runtimes: Intel’s Clear Containers and Hyper’s runV. As of Feb 13th, 2018, the two runtimes live alongside under the Kata Containers runtime github repository. Having two codebases is confusing the community and impeding potential contributors to really commit to the project.
Although each runtime has its strengths and gaps, the next step for the Kata Containers project should be about combining the two runtimes into a single code base, and merging each runtime feature set into a larger one.
To reach that goal, these two approaches are proposed:
- Have the community pick one runtime and then work on filling the feature gaps.
- Find a technical way to pick the best components from each runtime and merge them into a single code base.
During the Feb 5th, 2018 Kata Containers Architecture meeting, the community decided to initially go with the first solution, i.e. picking one runtime over the other.
We believe this solution is a little too aggressive and may underestimate the engineering costs of filling the technical gaps of either runtime.
Goals
The goal of this proposal is to show that the second approach is viable and can be implemented. We think by mixing the best of the two runtime components we can accelerate the runtime merging process and reach the Kata Containers 1.0 release sooner.
This proposal aims at:
- Building a flexible and extensible runtime based on a clean core framework
- Providing a smooth upgrade path for both runV and Clear Containers users, by keeping all features from both runtimes early in the merge process
- Accelerating the runtime merge process
- Providing a base for efficient CRI implementations, for both OCI based CRI shims and native ones
High Level Architecture
By picking the virtcontainers framework that already implements the entire Clear Containers feature set, together with the runV hypervisor drivers, VM factory library and runtime API, we would combine the 2 runtimes features sets. Building the Kata Containers runtime on this combination of components would thus fulfill the Kata Containers runtime requirements.
The Kata Containers runtime would then be based on the following components:
- The virtcontainers library would be the core Kata Containers runtime framework.
- In order to have a hypervisor and architecture agnostic design, the runV hypervisor drivers for Xen, libvirt and kvm-tool would be added to the virtcontainers library.
- The virtcontainers API would be improved and extended in order to support the current runV and Frakti specific requirements.
- runV's virtual machine factory.
