This topic describes how to create a dynamic NAS volume by creating a subdirectory in a NAS file system and mapping the subdirectory to a dynamic persistent volume (PV) for applications.
alicloud-nas-controller is deployed. For more information, see Install plug-ins.
Create a dynamic NAS volume
- Configure a StorageClass.
The following code block is an example of the StorageClass:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas mountOptions: - nolock,tcp,noresvport - vers=3 parameters: server: "23a9649583-iaq37.cn-shenzhen.nas.aliyuncs.com:/nasroot1/" driver: flexvolume provisioner: alicloud/nas reclaimPolicy: DeleteNote
- mountOptions: the mount options of the PV. The NAS volume is mounted based on the specified mount options.
- server: the list of mount targets that are used by the PV. The format is nfsurl1:/path1,nfsurl2:/path2. When multiple servers are configured, the PV provisioned by this StorageClass uses the servers in a round robin manner. For NAS file systems of Extreme type, the path must start with /share.
- driver: supports the FlexVolume and NFS drivers. The default driver is NFS.
- reclaimPolicy: the reclaim policy of the PV. We recommend that you set this parameter to Retain.
- If you set this parameter to Delete, the name of the subdirectory mapped to the PV is automatically changed after you delete the PV. For example, path-name is changed to archived-path-name.
- If you want to delete the subdirectory in the NAS file system, set
archiveOnDeleteto false in the StorageClass.
- Use the dynamic NAS volume.
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 5 volumeClaimTemplates: - metadata: name: html spec: accessModes: - ReadWriteOnce storageClassName: alicloud-nas resources: requests: storage: 2Gi template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine volumeMounts: - mountPath: "/data" name: html