b2c4b77911
Summary: Before this, we directly mounted the the rawfile on the mountpoint. In this revision the `STAGE_UNSTAGE_VOLUME` capability is implemented, meaning that the volume is first mounted to a staging path, and then `bind`-mounted to the actual path. This way we can free up loopback devices when they are not needed. Test Plan: - Create a pvc, and use it inside a pod - Run `losetup -l` on the node running the pod, and assert the creation of a loop device - Delete the pod, but not the pvc - Run `losetup -l` on the same node, and assert the removal of the loop device Reviewers: h.marvi, bghadiri Differential Revision: https://phab.hamravesh.ir/D806 |
||
---|---|---|
csi | ||
deploy/charts/rawfile-csi | ||
orchestrator | ||
protos | ||
templates | ||
.dockerignore | ||
.gitignore | ||
.gitlab-ci.yml | ||
consts.py | ||
Dockerfile | ||
metrics.py | ||
rawfile_servicer.py | ||
rawfile_util.py | ||
rawfile.py | ||
README.md | ||
remote.py | ||
requirements.in | ||
requirements.txt | ||
util.py |
RawFilePV
Kubernetes LocalPVs on Steroids
Install
helm install -n kube-system rawfile-csi ./deploy/charts/rawfile-csi/
Usage
Create a StorageClass
with your desired options:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: my-sc
provisioner: rawfile.hamravesh.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
Features
- Direct I/O: Near-zero disk performance overhead
- Dynamic provisioning
- Enforced volume size limit
- Thin provisioned
- Access Modes
- ReadWriteOnce
ReadOnlyManyReadWriteMany
- Volume modes
Filesystem
modeBlock
mode
- Volume metrics
- Supports fsTypes
- Online expansion: If fs supports it (e.g. ext4, btrfs)
- Online shrinking: If fs supports it (e.g. btrfs)
- Offline expansion/shrinking
- Ephemeral inline volume
- Snapshots: If the fs supports it (e.g. btrfs)