您可以通過阿里云提供的Flexvolume插件使用阿里云NAS文件存儲服務。本文介紹如何使用NAS靜態存儲卷。
前提條件
使用存儲卷時請將Flexvolume插件更新到最新版本。具體操作,請參見安裝與升級Flexvolume組件。
已通過kubectl連接Kubernetes集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
背景信息
使用Flexvolume插件,您可以通過PV和PVC方式使用阿里云NAS存儲卷。
注意事項
若您在應用模板中配置了securityContext.fsgroup參數,kubelet在存儲卷掛載完成后會執行chmod
或chown
操作,導致掛載時間過長。
若已配置securityContext.fsgroup參數,且需要減少掛載時間。具體操作,請參見NAS存儲卷掛載時間延長。
操作步驟
Pod可以通過關聯創建的PV和PVC的方式使用NAS存儲卷。
創建PV。
您可以使用YAML文件或者通過阿里云容器服務控制臺界面創建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存儲卷。
登錄容器服務管理控制臺。
在控制臺左側導航欄中,單擊集群。
在集群列表頁面中,單擊目標集群名稱或者目標集群右側操作列下的詳情。
在集群管理頁左側導航欄中,選擇
。在存儲卷頁面的右上角單擊創建。
在創建存儲卷對話框中,配置存儲卷的相關參數。
參數
描述
存儲卷類型
本示例中為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