Storage classes
Amazon EKS clusters that were created prior to Kubernetes version 1.11 weren't 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
This topic uses the in-tree Amazon EBS storage provisioner
To create an AWS storage class for your Amazon EKS cluster
-
Determine which storage classes your cluster already has.
kubectl get storageclassExample output:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 (default) kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 34mIf your cluster returns the previous output, then it already has the storage class defined in the remaining steps. You can define other storage classes using the steps for deploying any of the CSI drivers in the Storage chapter. Once deployed, you can set one of the storage classes as your default storage class.
-
Create an AWS storage class manifest file for your storage class. The
gp2-storage-class.yamlexample below defines a storage class calledgp2that uses the Amazon EBSgp2volume type.For more information about the options available for AWS storage classes, see AWS EBS
in the Kubernetes documentation. kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: gp2 annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: kubernetes.io/aws-ebs parameters: type: gp2 fsType: ext4 -
Use
kubectlto create the storage class from the manifest file.kubectl create -f gp2-storage-class.yamlOutput:
storageclass "gp2" created
To define a default storage class
-
List the existing storage classes for your cluster. A storage class must be defined before you can set it as a default.
kubectl get storageclassOutput:
NAME PROVISIONER AGE gp2 kubernetes.io/aws-ebs 8m -
Choose a storage class and set it as your default by setting the
storageclass.kubernetes.io/is-default-class=trueannotation.kubectl annotate storageclass gp2 storageclass.kubernetes.io/is-default-class=trueOutput:
storageclass "gp2" patched -
Verify that the storage class is now set as default.
kubectl get storageclassOutput:
gp2 (default) kubernetes.io/aws-ebs 12m