在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