Volumes are references from pods to storage units.
In the wild you'll find
persistentVolumeClaim most commonly, as it allows decoupling pod specification from the type of storage used.
Existing volumes can be imported mounted into pods, though their lifecycles won't be managed by the cluster:
cephfsmounts existing CephFS volumes.
fcmounts fibre channel volumes.
glusterfsallow replicated, multi-writer access to a volume.
iscsimounts existing iSCSI volumes.
nfsmounts an external Network File System share.
Useful for testing, or for configurations in which the pod needs to be able to manipulate host configuration:
emptyDiris useful for storing transient data, and its lifetime is tied to the pod.
hostPathis Node-specific. Note the type field, which allows sharing sockets.
Cloud-specific volume types may be available based on the environment in which the cluster is running:
awsElasticBlockStorefor EBS volumes
azureDiskfor Azure Disks.
azureFilesfor Azure Files shares.
gcePersistentDiskfor GCP persistent disks (Private).
flexVolume is a pre-CSI mechanism for extension.