pod -> pvc -> storage class -> pv

StorageClass
PVCs can also be used to dynamically allocate volumes using a Storage Class.

PVC
storage declarative and claim, Pods bind to PVCs and PVCs select an appropriate volume at Pod creation time

PV
PVCs can be used to select one of a number of suitable admin created Physical Volumes.

emptyDir
emptyDir
hostPath

StatefulSet
Manages the deployment and scaling of a set of Pods , and provides guarantees about the ordering and uniqueness of these Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling.

Container Storage Interface
The Container Storage Interface (CSI) is a standard for exposing arbitrary block and file storage systems to containerized workloads on Container Orchestration Systems (COs) like Kubernetes. Using CSI third-party storage providers can write and deploy plugins exposing new storage systems in Kubernetes without ever having to touch the core Kubernetes code.

Rook
Storage orchestrator, rook turns storage software into self-managing, self-scaling, and self-healing storage services. It does this by automating deployment, bootstrapping, configuration, provisioning, scaling, upgrading, migration, disaster recovery, monitoring, and resource management. Rook uses the facilities provided by the underlying cloud-native container management, scheduling and orchestration platform to perform its duties.

Comparison
img(°0°)