From 85b49cee028f4924b4340b9fb4bca2476a1a70cd Mon Sep 17 00:00:00 2001 From: Bin Liu Date: Thu, 1 Sep 2022 10:11:46 +0800 Subject: [PATCH] runtime-rs: add README.md Add README.md for runtime-rs. Fixes: #5022 Signed-off-by: Bin Liu --- README.md | 1 + src/runtime-rs/README.md | 126 ++++++++++++++++++ .../docs/images/crate-overview.drawio | 1 + src/runtime-rs/docs/images/crate-overview.svg | 4 + 4 files changed, 132 insertions(+) create mode 100644 src/runtime-rs/README.md create mode 100644 src/runtime-rs/docs/images/crate-overview.drawio create mode 100644 src/runtime-rs/docs/images/crate-overview.svg diff --git a/README.md b/README.md index 4a7a6ea9a7..2b0759a2c0 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,7 @@ The table below lists the core parts of the project: | Component | Type | Description | |-|-|-| | [runtime](src/runtime) | core | Main component run by a container manager and providing a containerd shimv2 runtime implementation. | +| [runtime-rs](src/runtime-rs) | core | The Rust version runtime. | | [agent](src/agent) | core | Management process running inside the virtual machine / POD that sets up the container environment. | | [libraries](src/libs) | core | Library crates shared by multiple Kata Container components or published to [`crates.io`](https://crates.io/index.html) | | [`dragonball`](src/dragonball) | core | An optional built-in VMM brings out-of-the-box Kata Containers experience with optimizations on container workloads | diff --git a/src/runtime-rs/README.md b/src/runtime-rs/README.md new file mode 100644 index 0000000000..a9f85e45d5 --- /dev/null +++ b/src/runtime-rs/README.md @@ -0,0 +1,126 @@ +# runtime-rs + +## Wath's runtime-rs + +`runtime-rs` is a new component introduced in Kata Containers 3.0, it is a Rust version of runtime(shim). It like [runtime](../runtime), but they have many difference: + +- `runtime-rs` is written in Rust, and `runtime` is written in Go. +- `runtime` is the default shim in Kata Containers 3.0, `runtime-rs` is still under heavy development. +- `runtime-rs` has a completed different architecture than `runtime`, you can check at the [architecture overview](../../docs/design/architecture_3.0). + +**Note**: + +`runtime-rs` is still under heavy development, you should avoid using it in critical system. + +## Architecture overview + +Also, `runtime-rs` provides the following features: + +- Turn key solution with builtin `Dragonball` Sandbox, all components in one process +- Async I/O to reduce resource consumption +- Extensible framework for multiple services, runtimes and hypervisors +- Lifecycle management for sandbox and container associated resources + +See the [architecture overview](../../docs/design/architecture_3.0) +for details on the `runtime-rs` design. + +`runtime-rs` is a runtime written in Rust, it is composed of several crates. + +This picture shows the overview about the crates under this directory and the relation between crates. + +![crates overview](docs/images/crate-overview.svg) + +Not all the features have been implemented yet, for details please check the [roadmap](../../docs/design/architecture_3.0/README.md#roadmap). + +## Crates + +The `runtime-rs` directory contains some crates in the crates directory that compose the `containerd-shim-kata-v2`. + +| Crate | Description | +|-|-| +| [`shim`](crates/shim)| containerd shimv2 implementation | +| [`service`](crates/service)| services for containers, includes task service | +| [`runtimes`](crates/runtimes)| container runtimes | +| [`resource`](crates/resource)| sandbox and container resources | +| [`hypervisor`](crates/hypervisor)| hypervisor that act as a sandbox | +| [`agent`](crates/agent)| library used to communicate with agent in the guest OS | +| [`persist`](crates/persist)| persist container state to disk | + +### shim + +`shim` is the entry point of the containerd shim process, it implements containerd shim's [binary protocol](https://github.com/containerd/containerd/tree/v1.6.8/runtime/v2#commands): + +- start: start a new shim process +- delete: delete exist a shim process +- run: run ttRPC service in shim + +containerd will launch a shim process and the shim process will serve as a ttRPC server to provide shim service through `TaskService` from `service` crate. + +### service + +The `runtime-rs` has an extensible framework, includes extension of services, runtimes, and hypervisors. + +Currently, only containerd compatible `TaskService` is implemented. + +`TaskService` has implemented the [containerd shim protocol](https://docs.rs/containerd-shim-protos/0.2.0/containerd_shim_protos/), +and interacts with runtimes through messages. + +### runtimes + +Runtime is a container runtime, the runtime handler handles messages from task services to manage containers. +Runtime handler and Runtime instance is used to deal with the operation for sandbox and container. + +Currently, only `VirtContainer` has been implemented. + +### resource + +In `runtime-rs`, all networks/volumes/rootfs are abstracted as resources. + +Resources are classified into two types: + +- sandbox resources: network, share-fs +- container resources: rootfs, volume, cgroup + +[Here](../../docs/design/architecture_3.0/README.md#resource-manager) is a detailed description of the resources. + +### hypervisor + +For `VirtContainer`, there will be more hypervisors to choose. + +Currently, only built-in `Dragonball` has been implemented. + +### agent + +`agent` is used to communicate with agent in the guest OS from the shim side. The only supported agent is `KataAgent`. + +### persist + +Persist defines traits and functions to help different components save state to disk and load state from disk. + +## Build and install + +```bash +$ make +$ sudo make install +``` +## Configuration + +`runtime-rs` has the same [configuration as `runtime`](../runtime/README.md#configuration) with some [limitations](#limitations). + +## Logging + +See the +[debugging section of the developer guide](../../docs/Developer-Guide.md#troubleshoot-kata-containers). + +## Debugging + +See the +[debugging section of the developer guide](../../docs/Developer-Guide.md#troubleshoot-kata-containers). + +## Limitations + +For Kata Containers limitations, see the +[limitations file](../../docs/Limitations.md) +for further details. + +`runtime-rs` is under heavy developments, and doesn't support all features as the Golang version [`runtime`](../runtime), check the [roadmap](../../docs/design/architecture_3.0/README.md#roadmap) for details. diff --git a/src/runtime-rs/docs/images/crate-overview.drawio b/src/runtime-rs/docs/images/crate-overview.drawio new file mode 100644 index 0000000000..674806df63 --- /dev/null +++ b/src/runtime-rs/docs/images/crate-overview.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/src/runtime-rs/docs/images/crate-overview.svg b/src/runtime-rs/docs/images/crate-overview.svg new file mode 100644 index 0000000000..24cadd7cf6 --- /dev/null +++ b/src/runtime-rs/docs/images/crate-overview.svg @@ -0,0 +1,4 @@ + + + +create::hypervisor
create::agent
create::agent
create::hypervisor
create::hypervisor
create::service
create::service
service_manager.run()
service_manager.run()
RPC calls

create_task
start
delete
kill
exec
... ...
RPC calls...
crate::shim
crate::shim
struct RuntimeHandlerManager
struct RuntimeHandlerManager
crate::runtimes
crate::runtimes
struct RuntimeHandlerManagerInner
struct RuntimeHandlerManagerInner
trait RuntimeHandler
trait RuntimeHandler
new_instance()
new_instance()
    fn init() -> Result<()>
    fn name() -> String
    fn new_handler() -> Arc<dyn RuntimeHandler>
    async fn new_instance() -> Result<RuntimeInstance>
    fn cleanup() -> Result<()>

fn init() -> Result<()>...
runtime_instance
runtime_instance
    id: String,
    runtime_instance: RuntimeInstance,
id: String,...
struct RuntimeInstance
struct RuntimeInstance
sandbox
sandbox
container_manager
container_manager
    pub sandbox: Arc<dyn Sandbox>,
    pub container_manager: Arc<dyn ContainerManager>,

pub sandbox: Arc<dyn Sandbox>,...
trait Sandbox
trait Sandbox

    async fn start() -> Result<()>;
    async fn stop() -> Result<()>;
    async fn cleanup() -> Result<()>;
    async fn shutdown() -> Result<()>;

async fn start() -> Result<()>;...
trait ContainerManager
trait ContainerManager

    async fn create_container() -> Result<PID>;
    async fn pause_container() -> Result<()>;
    async fn resume_container() -> Result<()>;
    async fn stats_container() -> Result<StatsInfo>;
    async fn update_container() -> Result<()>;
    async fn connect_container() -> Result<PID>;

    ... ...
async fn create_container() -> Result<PID>;...
impl
impl
LinuxContainer
LinuxContainer
impl
impl
WasmContainer
WasmContainer
new_instance()
new_instance()
impl
impl
VirtContainer
VirtContainer
struct RuntimeInstance
struct RuntimeInstance
sandbox
sandbox
container_manager
container_manager

    sandbox: VirtSandbox,
    container_manager: VirtContainerManager,
sandbox: VirtSandbox,...
impl
impl
struct VirtSandbox
struct VirtSandbox
resource_manager
resource_manager
hypervisor
hypervisor
agent
agent

    sid: String,
    resource_manager: Arc<ResourceManager>,
    agent: Arc<dyn Agent>,
    hypervisor: Arc<dyn Hypervisor>,

sid: String,...
agent
agent
impl
impl
struct VirtContainerManager
struct VirtContainerManager
resource_manager
resource_manager
containers
containers
    sid: String,
    pid: u32,
    containers: HashMap<String, Container>,
    resource_manager: Arc<ResourceManager>,
    agent: Arc<dyn Agent>,
sid: String,...
struct ResourceManagerInner
struct ResourceManagerInner
hypervisor
hypervisor
agent
agent
    sid: String,
    toml_config: Arc<TomlConfig>,
    agent: Arc<dyn Agent>,
    hypervisor: Arc<dyn Hypervisor>,
    network: Option<Arc<dyn Network>>,
    share_fs: Option<Arc<dyn ShareFs>>,

    pub rootfs_resource: RootFsResource,
    pub volume_resource: VolumeResource,
    pub cgroups_resource: CgroupsResource,
sid: String,...
struct ResourceManager
struct ResourceManager
trait Hypervisor
trait Hypervisor
    async fn prepare_vm() -> Result<()>;
    async fn start_vm() -> Result<()>;
    async fn stop_vm() -> Result<()>;
    async fn pause_vm() -> Result<()>;
    async fn save_vm() -> Result<()>;
    async fn resume_vm() -> Result<()>;

    ... ...
async fn prepare_vm() -> Result<()>;...
impl
impl
Dragonball
Dragonball
impl
impl
QEMU(WIP)
QEMU(WIP)
trait Agent
trait Agent
    async fn create_sandbox();
    async fn destroy_sandbox();
    async fn create_container();
    async fn pause_container();

    ... ...
async fn create_sandbox();...
impl
impl
KataAgent
KataAgent
struct ServiceManager
struct ServiceManager
handler
handler
    handler: Arc<RuntimeHandlerManager>,
    task_server: Option<Server>,
handler: Arc<RuntimeHandlerManager>,...
handler_message()
handler_message()
struct TaskService
struct TaskService
    handler: Arc<RuntimeHandlerManager>,
    handler: Arc<RuntimeHandlerManager>,
struct RuntimeHandlerManager
struct RuntimeHandlerManager
struct StructXyz
struct StructXyz
trait TraitAbc
trait TraitAbc
Legend
Legend
Function call
Function call
Reference
Reference
Trait Impl
Trait Impl
struct Container
struct Container
inner
inner
    pid: u32,
    config: ContainerConfig,
    inner: Arc<RwLock<ContainerInner>>,
    agent: Arc<dyn Agent>,
    resource_manager: ResourceManager,
pid: u32,...
struct ContainerInner
struct ContainerInner
rootfs
rootfs
volume
volume
    agent: Arc<dyn Agent>,
    init_process: Process,
    exec_processes: HashMap<String, Exec>,
    rootfs: Vec<Arc<dyn Rootfs>>,
    volumes: Vec<Arc<dyn Volume>>,
agent: Arc<dyn Agent>,...
trait Rootfs
trait Rootfs
trait Volume
trait Volume
create::<name>
create::<name>
Crate
Crate
Text is not SVG - cannot display
\ No newline at end of file