-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Description
The distributed storage system becomes more popular in cloud environments nowadays, and container images can easily be powered by these infrastructures. By deploying container images on distributed storage, customers can pull these images much more quickly and cost little local disk space.
The proposal suggests a way of pulling, mounting, pushing and committing images stored in a remote storage system, and we have implemented a prototype. This proposal also outlines the major changes needed in containerd to support this feature. This is not an exhaustive list, but outlines the key areas where changes are needed. This issue will be updated as more areas are discovered that need changes.
Snapshot
Create a new RBD snapshotter, of which each snapshot will be stored and mounted. For example, the Prepare method of RBD snapshotter will return mount directory of the new snapshot, which map remote disk to a local block device. The Commit otherwise synchronize local data to remote backend, by leveraging distributed storage features such as "checkpoint", "snapshot", "view" etc., to make a new remote disk.
We design a RBD manager interface to support different storage backends as plugins. The interface includes operations such as creation, removal, map, unmap, mount, unmount of remote disks. The distributed storage, such as Ceph, Rook etc. can instantiate a plugin implementation of their own.
Expected Work
- Create new RBD snapshotter
- Create RBD manager interface in the snapshotter
Image
The image subsystem need to adapt unpacking RBD image layer to a way of mapping and mounting remote disk locally. The image subsystem should be able to recognize the image type as RBD image before doing that.
Expected Work
- Support RBD image pull and push