The product described by this documentation, Anthos Clusters on AWS (previous generation), is now in maintenance mode. All new installs must use the current generation product, Anthos clusters on AWS.
Stay organized with collections
Save and categorize content based on your preferences.
This topic explains how to install a Container Storage Interface (CSI) storage
driver on your clusters.
Overview
By default, GKE on AWS provisions AWS
EBS volumes
using the default StorageClass.
If your workloads need use another type of storage volume, you can install a
compatible CSI driver to provide access to it.
The Container Storage Interface (CSI)
is an open standard API that gives Kubernetes workloads access to compliant
storage systems. CSI also enables the use of modern storage features such as
resizing and snapshots.
After installing a CSI driver, you need to create a Kubernetes
StorageClass.
You set the CSI driver as the provisioner for the StorageClass. Then you can
set the StorageClass as default,
or configure your workloads to use the StorageClass.
For an example of how to create a StatefulSet with a custom StorageClass,
see Using StorageClasses with your workloads.
Install a vendor's CSI driver
Storage vendors are responsible for providing installation instructions for
their CSI drivers. See the list of
CSI drivers
in the CSI documentation.
Follow the installation instructions for your CSI driver, and then continue with
the next steps on this page.
Verify your driver installation
After you install a CSI driver, you can verify the installation by running
the following commands.
Considerations for StorageClass backed by a CSI driver
When you create a StorageClass, consider the following:
Check your CSI driver documentation for
driver-specific parameters
that you provide to your StorageClass, including the provisioner name.
You should name the StorageClass after its properties (such as fast or
highly-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 a StorageClass which 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 storage drivers\n\nThis topic explains how to install a Container Storage Interface (CSI) storage\ndriver on your clusters.\n\nOverview\n--------\n\nBy default, GKE on AWS provisions AWS\n[EBS volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html)\nusing the default [StorageClass](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/concepts/storage).\nIf your workloads need use another type of storage volume, you can install a\ncompatible CSI driver to provide access to it.\n\nThe `Container Storage Interface` ([CSI](https://github.com/container-storage-interface/spec/blob/master/spec.md))\nis an open standard API that gives Kubernetes workloads access to compliant\nstorage systems. CSI also enables the use of modern storage features such as\nresizing and snapshots.\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/previous-generation/how-to/storage-class#set_default),\nor configure your workloads to use the StorageClass.\nFor an example of how to create a StatefulSet with a custom StorageClass,\nsee [Using StorageClasses with your workloads](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/storage-class#example_statefulset).\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| **Important:** Google does not provide support or instructions for third-party drivers. Contact 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\nHow to use a CSI driver\n-----------------------\n\nTo use a CSI driver:\n\n1. Create a custom [StorageClass](/kubernetes-engine/multi-cloud/docs/aws/previous-generation/how-to/storage-class#custom)\n that refers to 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/previous-generation/how-to/storage-class#set_default).\n\n### Considerations for StorageClass backed by a CSI driver\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/previous-generation/how-to/storage-class#custom) which references the CSI driver."]]