NFS 3.0 protocol support on Azure Blob storage is best suited for large scale read-heavy sequential access workload where data will be ingested once and minimally modified further. e.g. large scale analytic data, backup and archive, NFS apps for media rendering, and genomic sequencing etc. It offers lowest total cost of ownership.
- Make sure identity used by the driver controller is added to the
Contributor
role on the virtual network and network security group of the cluster. - [Optional][Bring Your Own Storage Account] Follow steps here to create storage account that supports NFSv3 protocol and then specify
storageAccount
in below storage classparameters
- Create an Azure File storage class
specify
protocol: nfs
in storage classparameters
for more details, refer to driver parameters
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: blob-nfs
provisioner: blob.csi.azure.com
allowVolumeExpansion: true
parameters:
protocol: nfs
mountOptions:
- nconnect=4 # Azure Linux node does not support nconnect option
run following command to create a storage class:
wget https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/deploy/example/storageclass-blob-nfs.yaml
# set `storageAccount` in storageclass-blob-nfs.yaml
kubectl create -f storageclass-blob-nfs.yaml
- Create a deployment with NFSv3 on Azure storage
kubectl create -f https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/deploy/example/nfs/statefulset.yaml
- enter pod to check
kubectl exec -it statefulset-blob-0 -- df -h
Filesystem Size Used Avail Use% Mounted on ... /dev/sda1 29G 11G 19G 37% /etc/hosts accountname.blob.core.windows.net:/accountname/pvc-cce02240-5d13-4bcb-b9eb-f9c7eeaaa640 256T 0 256T 0% /mnt/blob ... # ls -lt total 2 -rw-r--r-- 1 root root 1120 Sep 3 06:52 outfile