Mountpoint for S3

Overview

Mountpoint for S3 enables mounting S3 buckets as a file system in EKS pods.

Install Mountpoint CSI Driver

helm repo add aws-mountpoint-s3-csi-driver https://kubernetes-sigs.github.io/mountpoint-for-s3-csi-driver
helm repo update
 
helm install aws-mountpoint-s3-csi-driver aws-mountpoint-s3-csi-driver/aws-mountpoint-s3-csi-driver \
  --namespace kube-system

Create StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: s3-sc
provisioner: s3.amazonaws.com
parameters:
  bucketName: my-bucket
  mountOptions: "allow-delete,allow-write"

Use in Pod

apiVersion: v1
kind: Pod
metadata:
  name: app-with-s3
spec:
  containers:
  - name: app
    image: nginx
    volumeMounts:
    - mountPath: /data
      name: s3-volume
  volumes:
  - name: s3-volume
    persistentVolumeClaim:
      claimName: s3-claim
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: s3-claim
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: s3-sc
  resources:
    requests:
      storage: 1000Gi  # Virtual size, S3 is unlimited

Use Cases

  • Machine learning datasets
  • Data lakes
  • Log archival
  • Backup storage

Limitations

  • Eventually consistent
  • No rename/rename directories
  • No hard links
  • Higher latency than EBS/EFS

References