You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on May 2, 2023. It is now read-only.
Modifications specific to Low Level containers (runllc). More details added soon, document is WIP.
Overview
General idea is that OCI runtimes and containers do not map directly to unikernels or other low level type technologies and other similar technologies (i.e. UML, LKL, MirageOS, OSv, etc.). So we want to handle everything the container OCI interface throws at us, and provide pluggable parts of it FSHandle, NetworkHandle, ExecHandle where unikernel providers and runtimes can just implement a couple of functions and start orchestrating their unikernels on k8s. i.e. right now runnc is an ExecHandle for solo5-spt, but another ExecHandle could be solo5-hvt, or UML, LKL, etc.
In the process of writing runnc, we realized that the main things that mattered were FS, network and the actual execution unit. The rest can be handled the same.
People like k8s, and k8s is becoming leaner and more pluggable, which may allow more suitability for LL workloads
Exploring other options: UML, LKL, etc.
Goals
Create a library that users of the LL community can use to
Bridge the container and unikernel/LL world, provide interfaces that are more familiar to the LL community.
Checklist
Create LL interface (llif/*.go)
Create FS interface
Find inputs for interface
Sample LL Handler
Finalize interface
Create Network interface
Find inputs for interface
Sample LL Handler
Finalize interface
Create Exec interface
Find inputs for interface
Sample LL Handler
Finalize interface
Plumbing to move state around different LL Handlers and container state
Options (pass in container config)
InMemoryObjects (pass in memory)
How to handle Exec? Or just revamp model to work around exec? Since exec is run in the child process not in the factory process
Modifications specific to Low Level containers (
runllc
). More details added soon, document is WIP.Overview
General idea is that OCI runtimes and containers do not map directly to unikernels or other low level type technologies and other similar technologies (i.e. UML, LKL, MirageOS, OSv, etc.). So we want to handle everything the container OCI interface throws at us, and provide pluggable parts of it
FSHandle
,NetworkHandle
,ExecHandle
where unikernel providers and runtimes can just implement a couple of functions and start orchestrating their unikernels on k8s. i.e. right now runnc is anExecHandle
forsolo5-spt
, but anotherExecHandle
could besolo5-hvt
, orUML
,LKL
, etc.Motivation
Goals
Checklist
llif/*.go
)Integration Points
In
factory_nabla.go
create:Storage:
runnc/libcontainer/factory_nabla.go
Lines 168 to 171 in 46ededd
Network:
runnc/libcontainer/factory_nabla.go
Lines 174 to 180 in 46ededd
In
runnc_cont.go
:Disk
runnc/runnc-cont/runnc_cont.go
Lines 138 to 141 in 46ededd
Network
runnc/libcontainer/factory_nabla.go
Lines 159 to 180 in 46ededd
runnc/runnc-cont/runnc_cont.go
Lines 143 to 166 in 46ededd
Exec
runnc/runnc-cont/runnc_cont.go
Lines 168 to 222 in 46ededd
In
libcontainer/container_nabla.go
cleanup:Storage
runnc/libcontainer/container_nabla.go
Lines 269 to 271 in 46ededd
Network
runnc/libcontainer/container_nabla.go
Lines 273 to 275 in 46ededd
edge cases:
Pause Hack:
runnc/libcontainer/factory_nabla.go
Lines 162 to 166 in 46ededd
The text was updated successfully, but these errors were encountered: