CSI Is The Translator
CSI, the Container Storage Interface, is the standard plugin model Kubernetes uses to talk to storage platforms such as AWS. The CSI driver knows how to create, attach, detach, resize, and sometimes snapshot cloud volumes.
Understand how Kubernetes uses CSI drivers to provision cloud storage, how PVCs trigger AWS volumes, and when to choose EBS versus EFS.
CSI, the Container Storage Interface, is the standard plugin model Kubernetes uses to talk to storage platforms such as AWS. The CSI driver knows how to create, attach, detach, resize, and sometimes snapshot cloud volumes.
Your application asks for storage through a PersistentVolumeClaim. It does not need AWS-specific logic in the Pod spec.
The StorageClass decides which provisioner to use, what disk type to request, and when binding should happen.
In AWS, the CSI driver can create an EBS volume for single-node block storage or work with EFS for shared network file storage.
A Pod references a PVC such as app-data instead of calling AWS directly.
The claim says which storage policy to use, such as an AWS EBS CSI class.
The EBS CSI driver asks AWS to create a real EBS volume that matches the request.
The resulting cloud disk is represented inside the cluster as a PersistentVolume bound to the PVC.
Kubernetes attaches the volume to the correct node and mounts it into the Pod at the requested path.
/data. The CSI driver and Kubernetes hide the cloud API details behind the storage abstraction.apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ebs-sc
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
fsType: ext4
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-data
spec:
accessModes:
- ReadWriteOnce
storageClassName: ebs-sc
resources:
requests:
storage: 20Gi
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: app-data
| Topic | AWS EBS | AWS EFS |
|---|---|---|
| Storage style | Block storage, disk-like | Shared network filesystem |
| Typical access pattern | Usually ReadWriteOnce | Usually shared multi-node access |
| Best fit | Databases, stateful apps, single-writer workloads | Shared files, content, multi-node workloads |
| Mental model | One workload needs its own disk | Many workloads need the same file tree |
| Common mistake | Expecting EBS to behave like a shared filesystem | Using EFS where low-latency block semantics are required |
Use a PVC with an EBS CSI StorageClass for workloads such as PostgreSQL, MySQL, or any app that needs durable single-node block storage.
Keep cloud details in the StorageClass so the Pod and PVC stay cleaner and more reusable across environments.
Let Kubernetes and the CSI driver create volumes automatically instead of pre-creating and wiring every disk manually.
Explain storage as: Pod -> PVC -> StorageClass -> CSI driver -> cloud volume -> mounted filesystem path.