Stay organized with collectionsSave and categorize content based on your preferences.
This page explains how to install a Container Storage Interface (CSI) storage
driver on your GKE clusters.
CSIis an open standard API that enables Kubernetes to expose arbitrary storage
systems to containerized workloads. Also, CSI enables the use of modern
storage features, such as and resizing and snapshots.
By default, GKE on AWS provisionsEBS volumeswith theebs-csi-driver.
You can also
provisionEFS volumeswith theefs-csi-driver.
If you want to use another type of storage volume, you can install a CSI driver.
After installing a CSI driver, you need to create a KubernetesStorageClass.
You set the CSI driver as the provisioner for the StorageClass. Then, you canset the StorageClass as default,
or configure your workloads to use the StorageClass.
Considerations for StorageClass backed by a CSI driver
When you create a StorageClass, consider the following:
Check your CSI driver documentation fordriver-specific parametersthat you provide to your StorageClass, including the provisioner name.
You should name the StorageClass after its properties (such asfastorhighly-replicated), rather than after the name of the specific driver or
appliance behind it. When you name a StorageClass after its properties, you can
create StorageClasses with the same name in different clusters and
environments. Then, configure your workloads to use the same StorageClass.
What's next?
Create aStorageClasswhich references the CSI driver.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Install additional CSI drivers\n\nThis page explains how to install a Container Storage Interface (CSI) storage\ndriver on your GKE clusters.\n\n[CSI](https://github.com/container-storage-interface/spec/blob/master/spec.md)\nis an open standard API that enables Kubernetes to expose arbitrary storage\nsystems to containerized workloads. Also, CSI enables the use of modern\nstorage features, such as and resizing and snapshots.\nBy default, GKE on AWS provisions [EBS volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) with the [`ebs-csi-driver`](https://github.com/kubernetes-sigs/aws-ebs-csi-driver). You can also provision [EFS volumes](/kubernetes-engine/multi-cloud/docs/aws/how-to/use-efs) with the [`efs-csi-driver`](https://github.com/kubernetes-sigs/aws-efs-csi-driver). If you want to use another type of storage volume, you can install a CSI driver.\n\n\u003cbr /\u003e\n\nAfter installing a CSI driver, you need to create a Kubernetes\n[StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/).\nYou set the CSI driver as the provisioner for the StorageClass. Then, you can\n[set the StorageClass as default](/kubernetes-engine/multi-cloud/docs/aws/how-to/storage-class#set_default),\nor configure your workloads to use the StorageClass.\n\nBefore you begin\n----------------\n\n[Connect and authenticate to your cluster](/kubernetes-engine/multi-cloud/docs/aws/how-to/connect-and-authenticate-to-your-cluster)\n\nInstall a vendor's CSI driver\n-----------------------------\n\nStorage vendors are responsible for providing installation instructions for\ntheir CSI drivers. See the list of\n[CSI drivers](https://kubernetes-csi.github.io/docs/drivers.html)\nin the CSI documentation.\n\nFollow the installation instructions for your CSI driver, and then continue with\nthe next steps on this page.\n\nGoogle does not provide support or instructions for third-party drivers.\nContact your storage vendor for support.\n\nVerify your driver installation\n-------------------------------\n\nAfter you install a CSI driver, you can verify the installation by running\nthe following commands. \n\n kubectl get csinodes \\\n -o jsonpath='{range .items[*]} {.metadata.name}{\": \"} {range .spec.drivers[*]} {.name}{\"\\n\"} {end}{end}'\n\nUse a CSI driver\n----------------\n\nTo use a CSI driver, do the following:\n\n1. Create a custom [StorageClass](/kubernetes-engine/multi-cloud/docs/aws/how-to/storage-class#custom)\n which references the driver in its `provisioner` field.\n\n2. To provision storage, you can either:\n\n - Reference the StorageClass in a [StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)'s `volumeClaimTemplates` specification.\n - [Set it as the cluster's default StorageClass](/kubernetes-engine/multi-cloud/docs/aws/how-to/storage-class#set_default).\n\nConsiderations for StorageClass backed by a CSI driver\n------------------------------------------------------\n\nWhen you create a StorageClass, consider the following:\n\n- Check your CSI driver documentation for\n [driver-specific parameters](https://kubernetes.io/docs/concepts/storage/storage-classes/#the-storageclass-resource)\n that you provide to your StorageClass, including the provisioner name.\n\n- You should name the StorageClass after its properties (such as `fast` or\n `highly-replicated`), rather than after the name of the specific driver or\n appliance behind it. When you name a StorageClass after its properties, you can\n create StorageClasses with the same name in different clusters and\n environments. Then, configure your workloads to use the same StorageClass.\n\nWhat's next?\n------------\n\n- Create a [StorageClass](/kubernetes-engine/multi-cloud/docs/aws/how-to/storage-class#custom) which references the CSI driver."]]