This will sound a bit confusing at first, but just go with me on this.
We need a new "top level" service that sits alongside the existing "Cell Service".
This should be an extremely lightweight container service that runs containers without the concept of CRI or a Pod Sandbox. The new "container service" will be called from a host auraed to schedule a container in a new pod sandbox.
Example
Here is an example "model" to help me communicate what I am thinking.
Imagine a new host called "alice" which is effectively a bare metal server running in a rack.
Alice will run a Linux operating system with auraed as pid 1 and we will call this initial instance of auraed the Host Auraed.
A user remotely schedules 2 pods on Alice (auraed-guest-1 and auraed-guest-2) each has their own nested instance of auraed.
The Host Auraed first creates the guest for each pod, and then calls out to the cell service being suggested in this GitHub issue to schedule containers on each guest. The containers in each guest are free to communicate with each other using the guest filesystem, and the guest namespaces where applicable.
alice/
├── auraed # Host Auraed
├── auraed-guest-1 # Guest Pod 1
│ ├── auraed # Guest Auraed 1
│ └── container-service.rpc # New unwritten RPC service
├── auraed-guest-2 # Guest Pod 2
│ ├── auraed # Guest Auraed 2
│ └── container-service.rpc # New unwritten RPC service
├── cell-service.rpc # Host cell service; sits alongside other RPCs, health, etc
└── cri.rpc # Host CRI where we user calls "RunPodSandbox"
This will sound a bit confusing at first, but just go with me on this.
We need a new "top level" service that sits alongside the existing "Cell Service".
This should be an extremely lightweight container service that runs containers without the concept of CRI or a Pod Sandbox. The new "container service" will be called from a host auraed to schedule a container in a new pod sandbox.
Example
Here is an example "model" to help me communicate what I am thinking.
Imagine a new host called "alice" which is effectively a bare metal server running in a rack.
Alice will run a Linux operating system with
auraedas pid 1 and we will call this initial instance ofauraedthe Host Auraed.A user remotely schedules 2 pods on Alice (
auraed-guest-1andauraed-guest-2) each has their own nested instance ofauraed.The Host Auraed first creates the guest for each pod, and then calls out to the cell service being suggested in this GitHub issue to schedule containers on each guest. The containers in each guest are free to communicate with each other using the guest filesystem, and the guest namespaces where applicable.