Kubernetes Storage
PersistentVolumes, CSI drivers, and what to actually run.
Cloud-managed (you're on EKS / GKE / AKS)
- ★ AWS EBS CSI driver — gp3 volumes for general-purpose; io2 for high IOPS.
- ★ GCE PD CSI driver — pd-balanced / pd-ssd.
- Azure Disk / Azure File CSI — same shape on Azure.
- EFS / Filestore CSI — for shared / multi-attach use cases.
These are usually the right answer when you're on a managed cloud. Don't over-engineer.
Self-host distributed storage
- ★ Longhorn (Rancher / SUSE) — Kubernetes-native distributed block storage. Simple, web UI, snapshots, backups to S3. The default OSS pick.
- ★ Rook-Ceph — Ceph as a CRD-managed cluster. Industrial-grade; complex; very high ceiling.
- OpenEBS (Mayastor) — modern, performant block storage for k8s.
- Portworx — commercial; great for stateful workloads at scale.
- MicroCeph + Rook — lower-overhead Ceph for smaller clusters.
- MooseFS / LizardFS — older distributed FS.
Local / hostPath / per-node
- local-path-provisioner (Rancher) — bundled with k3s; perfect for "I just need a PVC on this node."
- TopoLVM — LVM-backed local volumes with topology awareness.
Object storage in-cluster
- MinIO — S3-compatible; can run as a cluster of pods. Production-ready for object storage in air-gapped envs.
- SeaweedFS — alternative; supports more access patterns.
- Garage — newer, lighter MinIO alternative.
Backup / snapshots
- Velero — backup k8s resources + PV snapshots; see Backup.
- Kasten K10 — paid; rich UI; great for stateful workloads.
- Stash — open-source backup operator.
- VolumeSnapshot + restore — built into k8s; CSI driver-dependent.
Multi-attach / shared FS
- NFS via nfs-subdir-external-provisioner — easy, works.
- CephFS via Rook — proper distributed shared FS.
- EFS / Azure Files / GCP Filestore — managed shared filesystems.
- JuiceFS — POSIX FS over S3; great for ML workloads.
Patterns to adopt
- ★ Use cloud-managed storage when on a cloud. Operating Ceph yourself is a real job.
- Test restore drills. A backup you've never restored is a hope.
- Pin your CSI driver version in IaC; tested upgrades save tears.
- Tag StorageClasses by workload.
gp3-encrypted-fast≠gp3-cheap-archive. reclaimPolicy: Retainfor important data;Deleteis fast disaster.- Resize PVs in-place instead of creating new ones (CSI supports this).
- Stateful workloads belong with operators. See k8s operators.
Pick this if…
- Default on AWS / GCP / Azure: the cloud's CSI driver. Don't fight it.
- Self-host, modest cluster: Longhorn.
- Self-host, big workloads: Rook-Ceph.
- Shared filesystem: NFS subdir provisioner (easy) or CephFS (serious).
- In-cluster S3: MinIO or SeaweedFS.
- Backup: Velero.