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:

graph TB A[Cloud Kubernetes] --> B[Cloud Storage Services] B --> C[AWS EBS] B --> D[GCE Persistent Disk] B --> E[Azure Disk] C --> F[Block Storage] D --> F E --> F B --> G[AWS EFS] B --> H[Azure Files] B --> I[GCE Filestore] G --> J[File Storage] H --> J I --> J style A fill:#e1f5ff style B fill:#fff4e1 style F fill:#e8f5e9 style J fill:#f3e5f5

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

ProviderBlock StorageFile StorageReadWriteManyNotes
AWS EBSMultiple volume types
AWS EFSNFS, auto-scaling
GCE Persistent DiskRegional disks available
GCE FilestoreManaged NFS
Azure DiskMultiple SKUs
Azure FilesSMB 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:

  1. Use appropriate storage tiers (Standard vs Premium)
  2. Right-size volumes (don’t over-provision)
  3. Enable volume expansion (start smaller, grow as needed)
  4. Use Delete reclaim policy for non-production
  5. Monitor and clean up unused volumes
  6. Consider Reserved Capacity for predictable workloads

Best Practices

  1. Use CSI drivers - Always use cloud provider CSI drivers
  2. Match storage to workload - Choose appropriate storage types
  3. Use WaitForFirstConsumer - Better zone placement
  4. Enable encryption - Use encryption for sensitive data
  5. Set appropriate reclaim policies - Retain for production, Delete for dev
  6. Monitor costs - Track storage costs and usage
  7. Enable volume expansion - Allow volumes to grow as needed
  8. Use regional disks - For high availability (where available)
  9. Test failover - Test storage failover scenarios
  10. 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