在NAS文件系統中通過創建子目錄并將其映射為一個動態PV提供給應用。本文介紹如何使用NAS動態存儲卷。
前提條件
已創建Kubernetes集群,并且在該集群中安裝Flexvolume插件。具體操作,請參見創建Kubernetes托管版集群。
已部署alicloud-nas-controller組件。具體操作,請參見安裝與升級Flexvolume組件。
注意事項
若您在應用模板中配置了securityContext.fsgroup參數,kubelet在存儲卷掛載完成后會執行chmod
或chown
操作,導致掛載時間過長。
若已配置securityContext.fsgroup參數,且需要減少掛載時間。具體操作,請參見NAS存儲卷掛載時間延長。
創建動態NAS卷
配置StorageClass。
配置示例如下所示:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas mountOptions: - nolock,tcp,noresvport - vers=3 parameters: server: "23a9649583-i****.cn-shenzhen.nas.aliyuncs.com:/nasroot1/" driver: flexvolume provisioner: alicloud/nas reclaimPolicy: Delete
參數
說明
mountOptions
表示生成的PV Options配置,掛載NAS卷時使用這個Options進行掛載。
server
表示生成目標PV所使用NAS掛載點列表。格式為 nfsurl1:/path1,nfsurl2:/path2;當配置多個Server時,通過此StorageClass創建的PV會輪詢使用上述Server作為配置參數;極速NAS配置路徑需要以/share開頭。
driver
支持Flexvolume、NFS兩種驅動,默認為NFS。
reclaimPolicy
PV的回收策略,建議配置為Retain。
當配置為Delete時,刪除PV后NAS文件系統中的對應目錄會默認修改名稱(例如,path-name會被修改為archived-path-name)。
如果需要刪除文件系統中對應的存儲目錄,可在StorageClass中配置
archiveOnDelete
為false。
在StatefulSet中使用NAS動態存儲卷。
使用以下示例創建Service及StatefulSet應用:
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: selector: matchLabels: app: nginx 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