您可以通過阿里雲提供的Flexvolume外掛程式使用阿里雲NAS檔案儲存體服務。本文介紹如何使用NAS靜態儲存卷。
前提條件
- 使用NAS資料卷之前,您需要在檔案儲存體管理主控台上建立檔案系統,並在檔案系統中添加掛載點。建立的NAS檔案系統掛載點需要和您的叢集位於同一VPC。
- 請將Flexvolume外掛程式更新到最新版本。
- 已通過kubectl串連Kubernetes叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
背景資訊
使用Flexvolume外掛程式,您可以通過PV和PVC方式使用阿里雲NAS儲存卷。
操作步驟
Pod可以通過關聯建立的PV和PVC的方式使用NAS儲存卷。
- 建立PV。您可以使用YAML檔案或者通過阿里雲Container Service控制台介面建立NAS資料卷。
通過YAML檔案建立PV。
使用nas-pv.yaml檔案建立PV。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas spec: capacity: storage: 5Gi storageClassName: nas accessModes: - ReadWriteMany flexVolume: driver: "alicloud/nas" options: server: "0cd8b4a576-u****.cn-hangzhou.nas.aliyuncs.com" path: "/k8s" vers: "3" options: "nolock,tcp,noresvport"
- 通過控制台介面建立雲端硬碟資料卷。
在控制台左側導覽列中,單擊叢集。
在叢集列表頁面中,單擊目的地組群名稱或者目的地組群右側操作列下的詳情。
在叢集管理頁左側導覽列中,選擇
。在儲存卷頁面的右上方單擊建立。
在建立儲存卷對話方塊中,配置儲存卷的相關參數。
參數
描述
儲存卷類型
本樣本中為NAS。
名稱
建立的儲存卷名稱。儲存卷名在叢集內必須唯一。本例為pv-nas。
儲存驅動
本樣本選擇Flexvolume。
總量
所建立儲存卷的容量。注意不能超過NAS檔案系統的儲存容量。
訪問模式
預設為ReadWriteMany。
掛載點網域名稱
叢集在NAS檔案系統中掛載點的掛載地址。關於NAS檔案系統掛載點的管理,請參見管理掛載點。
子目錄
NAS路徑下的子目錄,以 / 開頭,設定後儲存卷將掛載到指定的子目錄。
如果NAS根目錄下沒有此子目錄,會預設建立後再掛載。
您可以不填此項,預設掛載到NAS根目錄。
極速NAS需要以/share開頭。
許可權
設定掛載目錄的存取權限,例如755、644、777等。
說明只有掛載到NAS子目錄時才能設定許可權,掛載到根目錄時無法設定。
當掛載的目錄檔案量較大時不建議此配置,否則會出現chmod長時間執行。
如果掛載到NAS子目錄時,您可以選擇設定許可權,或者不填此項。
不填此項,預設許可權為NAS檔案原來的許可權。
選擇設定許可權時:
如果是Flexvolume v1.14.6.15-8d3b7e7-aliyun以前版本,則使用遞迴方式進行許可權操作,掛載目錄下面所有檔案、目錄都會被修改許可權。
如果是Flexvolume v1.14.6.15-8d3b7e7-aliyun以及以後版本,配置了此項,按照許可權模式的配置執行許可權操作。
許可權模式
定義許可權變更方式,支援非遞迴或遞迴方式。
非遞迴:執行許可權變更時,只對掛載目錄起作用,其子目錄、包含的檔案不進行許可權變更。
遞迴:執行許可權變更時,會對其子目錄、包含的檔案進行遞迴操作,全部變更許可權。
說明當掛載目錄下面檔案數量較多時,使用遞迴方式,會出現執行chmod耗時間長度,從而導致掛載、卸載操作失敗的可能,請謹慎使用。
版本
掛載的NAS卷使用的NFS協議版本號碼,推薦使用V3,且極速類型NAS只支援V3。
標籤
為該儲存卷添加標籤。
完成配置後,單擊建立。
建立PVC。
使用nas-pvc.yaml檔案建立PVC。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nas spec: accessModes: - ReadWriteMany storageClassName: nas resources: requests: storage: 5Gi
建立Pod。
使用nas-pod.yaml檔案建立Pod。
apiVersion: apps/v1 kind: Deployment metadata: name: nas-static labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: /data volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nas