Export your ZFS and LVM pools to Kubernetes.
Run one CSI driver for every pool on your storage nodes. The Linux kernel's NVMe-oF target serves each volume to your pods over TCP.
Scroll sideways for the whole drawing
One driver for every backend and protocol
Install one Helm release instead of a driver for each backend. ZFS and LVM pools share one configuration model: each setting has the same YAML shape in a PillarStore or PillarProtocol, a PillarStorageClass, and a PVC annotation.
| Axis | Shipped | Planned |
|---|---|---|
| Backends | ZFS zvols, LVM logical volumes | More backends |
| Protocols | NVMe-oF/TCP | iSCSI, NFS, SMB |
Shipped Planned, not available yet
# values.yaml
agent:
backends:
- zfs:
pool: tank
parentDataset: k8s
- lvm:
volumeGroup: data-vgYour hosts need kernel modules and a pool
The driver images carry the ZFS, LVM, and filesystem tools, and the agent writes the NVMe-oF target configuration itself. You install no pillar-csi packages on the host, and the driver needs no SSH.
In the images
zfsandzpoolfrom OpenZFS 2.4lvm2mkfs.ext4,mkfs.xfs, and the resize tools- NVMe-oF target setup through configfs, replacing
nvmetcliandtargetcli - NVMe-oF connect through
/dev/nvme-fabrics, replacingnvme-cli
On your hosts
- Storage nodes
nvmet,nvmet_tcp, and a ZFS pool or LVM volume group- Workers
nvme_fabrics,nvme_tcp- Cluster
- Kubernetes 1.24 or later, Helm 3.8 or later
General notes
- Each volume lives on one storage node. pillar-csi does not replicate data, so a volume is unavailable while its node is down.
- The kernel carries every read and write. The controller, agent, and node plugin can restart without interrupting connected volumes.
- iSCSI, NFS, and SMB are planned as new protocols in the same driver and configuration model. NVMe-oF/TCP ships today.