-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Propose] Kuasar Shim and Domain Sandoxer Server #6
Comments
Brilliant idea! Thanks! Actually we have a shim crate for keep compatibility with containerd. However, our current shim is just a proxy service redirecting rpc request from containerd to sandboxer, so it needs long running on the host, which is not a permanent solution. I think your propose is a possiable way to evolve kuasar shim. The removel of shim maybe the final goal of kuasar, we could make some steps towards it, like what you have proposed. I'm going to arrange a meeting discussing about this. As for upgrade scenario, sandboxer will persistently store sandbox info to the disk, and reload it after restart. So there is no worry for the lost. But the service can't available during upgrading as contaienrd can't either. |
We'd like to take this propose as the next evolution direction of kuasar shim, and we also need to talk about our project on containerd community meeting. |
Thanks, I would also love to have more detailed details on how to move forward with containerd/containerd#7739 (e.g. completing each task of the issue design). |
What would you like to be added?
Currently, the various sandboxers in kuasar are running as domain servers resident in the nodes.
The communication between containerd and sandboxer is done by modifying the logic of the Sandbox and Runtime for Containerd, and the impact of these modifications on Containerd is huge.
Can we achieve the goal of kuasar without modifying Containerd, or without making huge changes?
The goal of kuasar as I understand it should be:
Currently kuasar removes long running shim by sandboxer of domain server, kuasar-io/containerd links sandboxer server by specifying sandboxer address in configuration and modifies Sandbox interface and runtime logic.
We can actually keep running sandboxer as a domain server, but we don't need to make any changes to Containerd (of course there may be minor changes, but this is much smaller than kuasar-io/containerd).
I think Sandbox and the core is the Sandbox server, which is a very flexible and versatile design, and I think we should try to use it as much as possible.
We keep the lightweight shim binary for containerd to call, and the
shim start
command will connect to the domain server to request the address of the task server and sandbox server, and return that address to containerd's runtime(shim manager).Unlike
containerd-shim-runc-v2
, the start subcommand ofkuaras shim
(eg.containerd-shim-kuasarvmm-<version>
orcontainerd-shim-kuasarwasm-<version>
) does not fork itself to start the task server and sandbox server, they will exit after returning the address and it does not run for long.This is already used in runwasi
The Shim is no longer a shim for containerd and runc or other underlying runtimes, but a shim for containerd and sandboxer server
Interacting with the domain sandboxer server through shims that do not run for long periods of time is fully compatible with the current sandbox and runtime design, and ensures that our goal of
not having a lot of long-running shim processes
is met.BTW, Also I found a new question, what if we update the sandboxer server with minimal impact, since sandboxer manages all the underlying container processes, it might be important how we can upgrade it more smoothly.
If we have the perfect upgrade solution, maybe we can have all sandboxers merged into one
kuasar-sandboxer
domain serverMaybe we could use wasm to implement the core logic in
kuasar-sandboxer
and plug in the specific runtime implementation through wasm, that's just an idea.:rofl:Why is this needed?
We can actually keep running sandboxer as a domain server, but we don't need to make any changes to Containerd (of course there may be minor changes, but this is much smaller than kuasar-io/containerd).
I think Sandbox and the core is the Sandbox server, which is a very flexible and versatile design, and I think we should try to use it as much as possible.
The text was updated successfully, but these errors were encountered: