Cloud Volumes
Major cloud providers offer managed persistent storage services that integrate seamlessly with Kubernetes. These cloud volumes provide reliable, scalable storage with features like automatic backups, encryption, and dynamic provisioning. Understanding cloud provider storage options helps you choose the right storage solution for your cloud-native applications.
Cloud Storage Overview
Cloud providers offer different storage services optimized for various use cases:
Amazon Web Services (AWS)
Amazon EBS (Elastic Block Store)
EBS provides persistent block storage volumes for EC2 instances and EKS clusters.
StorageClasses for EBS:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ebs-gp3
provisioner: ebs.csi.aws.com
parameters:
type: gp3 # Volume type: gp2, gp3, io1, io2, st1, sc1
iops: "3000" # IOPS (for gp3, io1, io2)
throughput: "125" # Throughput in MB/s (for gp3)
encrypted: "true" # Enable encryption
kmsKeyId: "arn:aws:kms:..." # KMS key (optional)
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
allowVolumeExpansion: true
EBS Volume Types:
- gp3 - General Purpose SSD (latest, recommended)
- gp2 - General Purpose SSD (legacy)
- io1/io2 - Provisioned IOPS SSD (high performance)
- st1 - Throughput Optimized HDD
- sc1 - Cold HDD
Amazon EFS (Elastic File System)
EFS provides fully managed NFS file storage that supports ReadWriteMany access mode.
StorageClass for EFS:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: efs-sc
provisioner: efs.csi.aws.com
parameters:
provisioningMode: efs-ap # Access point mode
fileSystemId: fs-12345678
directoryPerms: "0755"
reclaimPolicy: Delete
EFS Characteristics:
- Supports ReadWriteMany
- Automatic scaling
- Pay for what you use
- Integrated with EKS
Google Cloud Platform (GCE)
GCE Persistent Disk
Persistent Disk provides durable, high-performance block storage.
StorageClasses for Persistent Disk:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-standard
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-standard # Disk type: pd-standard, pd-ssd, pd-balanced
replication-type: regional-pd # Regional (replicated) or zonal
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
allowVolumeExpansion: true
Persistent Disk Types:
- pd-standard - Standard persistent disk (HDD)
- pd-ssd - SSD persistent disk (higher performance)
- pd-balanced - Balanced persistent disk (SSD, cost-optimized)
Regional Persistent Disks:
Regional persistent disks are replicated across two zones in the same region:
parameters:
type: pd-ssd
replication-type: regional-pd # Replicated across zones
GCE Filestore
Filestore provides managed NFS file storage.
StorageClass for Filestore:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: filestore
provisioner: filestore.csi.storage.gke.io
parameters:
network: default
instanceTier: STANDARD # STANDARD, PREMIUM, BASIC_HDD, BASIC_SSD
reclaimPolicy: Retain
Filestore Characteristics:
- Fully managed NFS
- Supports ReadWriteMany
- Multiple performance tiers
Microsoft Azure
Azure Disk
Azure Managed Disks provide persistent block storage.
StorageClasses for Azure Disk:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azure-disk
provisioner: disk.csi.azure.com
parameters:
skuName: Premium_LRS # Premium_LRS, StandardSSD_LRS, Standard_LRS, UltraSSD_LRS
location: eastus # Azure region
fsType: ext4
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
allowVolumeExpansion: true
Disk Types:
- Premium_LRS - Premium SSD (high performance)
- StandardSSD_LRS - Standard SSD (balanced)
- Standard_LRS - Standard HDD (cost-effective)
- UltraSSD_LRS - Ultra SSD (highest performance)
Azure Files
Azure Files provides fully managed SMB/NFS file shares.
StorageClass for Azure Files:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azure-file
provisioner: file.csi.azure.com
parameters:
skuName: Premium_LRS # Premium_LRS, Standard_LRS
protocol: smb # smb or nfs
reclaimPolicy: Delete
Azure Files Characteristics:
- Supports ReadWriteMany
- SMB or NFS protocol
- Premium and Standard tiers
Comparison Table
| Provider | Block Storage | File Storage | ReadWriteMany | Notes |
|---|---|---|---|---|
| AWS EBS | ✅ | ❌ | ❌ | Multiple volume types |
| AWS EFS | ❌ | ✅ | ✅ | NFS, auto-scaling |
| GCE Persistent Disk | ✅ | ❌ | ❌ | Regional disks available |
| GCE Filestore | ❌ | ✅ | ✅ | Managed NFS |
| Azure Disk | ✅ | ❌ | ❌ | Multiple SKUs |
| Azure Files | ❌ | ✅ | ✅ | SMB or NFS |
Common Patterns
Production Database (Block Storage)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: production-db
provisioner: pd.csi.storage.gke.io # GCE example
parameters:
type: pd-ssd
replication-type: regional-pd
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain # Protect production data
allowVolumeExpansion: true
Shared Content (File Storage)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: shared-content
provisioner: efs.csi.aws.com # AWS EFS example
parameters:
provisioningMode: efs-ap
fileSystemId: fs-12345678
reclaimPolicy: Delete
Development Environment
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: dev-storage
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-standard # Cost-effective for dev
volumeBindingMode: Immediate
reclaimPolicy: Delete # Auto-cleanup
Cost Considerations
Cloud storage costs vary by:
- Storage type - SSD costs more than HDD
- Size - Pay per GB provisioned
- IOPS/throughput - Additional cost for performance
- Region - Different regions have different pricing
- Backups/snapshots - Additional storage costs
Cost optimization tips:
- Use appropriate storage tiers (Standard vs Premium)
- Right-size volumes (don’t over-provision)
- Enable volume expansion (start smaller, grow as needed)
- Use Delete reclaim policy for non-production
- Monitor and clean up unused volumes
- Consider Reserved Capacity for predictable workloads
Best Practices
- Use CSI drivers - Always use cloud provider CSI drivers
- Match storage to workload - Choose appropriate storage types
- Use WaitForFirstConsumer - Better zone placement
- Enable encryption - Use encryption for sensitive data
- Set appropriate reclaim policies - Retain for production, Delete for dev
- Monitor costs - Track storage costs and usage
- Enable volume expansion - Allow volumes to grow as needed
- Use regional disks - For high availability (where available)
- Test failover - Test storage failover scenarios
- Document configurations - Document StorageClass configurations
Multi-Cloud Considerations
If running Kubernetes across multiple clouds:
- Each cloud has different storage services
- StorageClasses are cloud-specific
- Consider storage abstraction layers
- Plan for data portability if needed
- Use cloud-agnostic tools (Velero) for backups
See Also
- StorageClasses - Dynamic provisioning
- CSI Persistent Volumes - Container Storage Interface
- PVs & PVCs - Persistent Volumes and Persistent Volume Claims
- Cloud Platforms - EKS - EKS-specific storage details
- Cloud Platforms - GKE - GKE-specific storage details
- Cloud Platforms - AKS - AKS-specific storage details