Clustered compute and storage support in EVE

This proposal is to add clustered compute and storage functionality to EVE.

 

Motivation:

EVE software today runs on single device and that device is orchestrated using the REST API which EVE exposes to the controller. Since it is a single device the HA and scalability of the EVE-OS is an issue if the customer applications demands such requirements.

The motivation of this proposal is to eliminate such limitation and make EVE-OS a distributed storage and compute operating system at the edge.

 

The following picture is high level overview of EVE-OS today.

 

 

Proposed EVE architecture:

There are many open source distributed clustering solutions and one of those is Kubernetes based system. The proposal here is to bring Kubernetes based eco system into EVE and convert EVE storage into a truly distributed storage system. Please note I am not proposing EVE to expose Kubernetes API, EVE will still expose its own REST API, the Kubernetes components compile into or ship with EVE and are accessed internally by EVE micro services and a new translation layer to provide the clustered storage.

The following are the new proposed features as part of this architecture:

True scale out EVE-OS based on Kubernetes components (k3s)
Native container support
Virtualization support using Kubevirt
VM and container failover support (HA)
Storage replication using CSI (ex. longhorn)
Kubernetes based CNI
Orchestrated by controller using REST API
API compatibility to support previous EVE versions
New microservice and a Translation layer to connect EVE  to Kubernetes components

 

The following picture is high level overview of proposed EVE architecture.

A new micro service will talk to a new translation layer which interacts with Kubernetes eco system. External communication from EVE is still through the EVE REST API.

 

 

 

A sample 3 node EVE-OS cluster

 

 

 

Building new EVE:

Since EVE already has mechanism to build for various hypervisor versions using Makefile flag HV="kvm|xen|acrn"  the proposal is to compile the new EVE with HV=kubevirt. The base EVE micro services will be common for all type of hypervisors. Kubevirt specific EVE will include Kubernetes components like k3s, CSI (longhorn) and kubevirt (ofcourse). 

This mechanism will ensure that EVE can still be upgraded and supported on kvm based systems.

 

Conclusion:

With this approach we will be bringing Kubernetes based components to the edge and make EVE-OS a scalable and distributed system.