Import a preexisting Azure Disk volume
If you already have an Azure Disk volume to use with GKE on Azure, you can create a PersistentVolume (PV) object and reserve it for a specific PersistentVolumeClaim (PVC).
This page explains how to create a PV by using an existing volume populated with data, and how to use the PV in a Pod.
Before you begin
Create a PersistentVolume for a pre-existing volume
You can import an existing volume by specifying a new PV.
-
Copy the following YAML into a file named
existing-volume.yaml.:apiVersion : v1 kind : PersistentVolume metadata : name : VOLUME_NAME annotations : pv.kubernetes.io/provisioned-by : disk.csi.azure.com spec : capacity : storage : VOLUME_CAPACITY accessModes : - ReadWriteOnce persistentVolumeReclaimPolicy : Retain storageClassName : STORAGE_CLASS_NAME claimRef : name : my-pvc namespace : default csi : driver : disk.csi.azure.com volumeHandle : /subscriptions/ SUBSCRIPTION_ID /resourcegroups/ RESOURCE_GROUP_NAME /providers/microsoft.compute/disks/ DISK_NAME fsType : FILE_SYSTEM_TYPEReplace the following:
- VOLUME_NAME : a name for the volume
- VOLUME_CAPACITY
: size of the volume. For example,
30Gi. For more information on specifying volume capacity in Kubernetes, see the Meaning of memory . -
STORAGE_CLASS_NAME : the name of the StorageClass that provisions the volume. For example, you can use the default
standard-rwo. -
SUBSCRIPTION_ID : the Azure subscription ID that contains the volume.
-
RESOURCE_GROUP_NAME : the Azure resource group that contains the volume.
-
DISK_NAME : the Azure Disk name of the volume.
-
FS_TYPE : the file system type of the volume. For example,
ext4.
-
Apply the YAML to your cluster
kubectl apply -f existing-volume.yaml -
Confirm the creation of your PV
kubectl describe pv VOLUME_NAMEThe output of this command contains the status of the PV.
Use the volume with a PersistentVolumeClaim and Pod
After you have imported your volume, you can create a PVC and a Pod that mounts the PVC.
-
The following YAML creates a PVC and attaches it to a Pod running the Nginx web server. Copy it into a file named
nginx.yaml:apiVersion : v1 kind : PersistentVolumeClaim metadata : name : my-pvc spec : storageClassName : STORAGE_CLASS_NAME volumeName : VOLUME_NAME accessModes : - ACCESS_MODE resources : requests : storage : VOLUME_CAPACITY --- apiVersion : v1 kind : Pod metadata : name : web-server spec : containers : - name : web-server image : nginx volumeMounts : - mountPath : /var/lib/www/html name : data volumes : - name : data persistentVolumeClaim : claimName : my-pvcReplace the following:
- STORAGE_CLASS
: the name of the StorageClass from the
PersistentVolume you created previously. For example,
standard-rwo. - ACCESS_MODE
: the access mode of the volume. For Azure Disk,
use
ReadWriteOnce. For Azure File, useReadWriteMany. - VOLUME_CAPACITY
: size of the volume. For example,
30Gi.
- STORAGE_CLASS
: the name of the StorageClass from the
PersistentVolume you created previously. For example,
-
Apply the YAML to your cluster
kubectl apply -f nginx.yaml -
Check the status of your Nginx instance with
kubectl describe. The output should have aSTATUSofRunning.kubectl describe pod web-server
What's next
- Use additional storage drivers with GKE on Azure.
- Read the documentation for the Azure Disk CSI driver .

