Storage classes - Amazon EKS

Storage classes

Amazon EKS clusters that were created prior to Kubernetes version 1.11 were not created with any storage classes. You must define storage classes for your cluster to use and you should define a default storage class for your persistent volume claims. For more information, see Storage classes in the Kubernetes documentation.


This topic uses the in-tree Amazon EBS storage provisioner. The existing in-tree Amazon EBS plugin is still supported, but by using a CSI driver, you benefit from the decoupling of Kubernetes upstream release cycle and CSI driver release cycle. Eventually, the in-tree plugin will be deprecated in favor of the CSI driver.

To create an AWS storage class for your Amazon EKS cluster

  1. Create an AWS storage class manifest file for your storage class. The gp2-storage-class.yaml example below defines a storage class called gp2 that uses the Amazon EBS gp2 volume type.

    For more information about the options available for AWS storage classes, see AWS EBS in the Kubernetes documentation.

    kind: StorageClass apiVersion: metadata: name: gp2 annotations: "true" provisioner: parameters: type: gp2 fsType: ext4
  2. Use kubectl to create the storage class from the manifest file.

    kubectl create -f gp2-storage-class.yaml


    storageclass "gp2" created

To define a default storage class

  1. List the existing storage classes for your cluster. A storage class must be defined before you can set it as a default.

    kubectl get storageclass


  2. Choose a storage class and set it as your default by setting the annotation.

    kubectl patch storageclass <gp2> -p '{"metadata": {"annotations":{"":"true"}}}'


    storageclass "gp2" patched
  3. Verify that the storage class is now set as default.

    kubectl get storageclass


    gp2 (default) 12m