本文介绍如何通过Flexvolume挂载静态NAS存储卷方式实现在容器服务Kubernetes集群中使用阿里云NAS存储卷。
前提条件
- 已创建Kubernetes集群,详情请参见创建Kubernetes专有版集群。
如果是自建Kubernets集群,请先下载并安装阿里云Flexolume驱动。
- 确认Flexvolume驱动版本为v1.12.6.52-f6604e5-aliyun及以上版本。
如果低于该版本,请升级Flexvolume驱动,详情请参见升级Flexvolume驱动。
- 已创建文件系统,详情请参见创建文件系统。
创建的文件系统需要与您的Kubernetes集群在同一可用区。
- 已添加挂载点,详情请参见添加挂载点。
添加挂载点时所选的VPC网络要与您Kubernetes集群所在的VPC网络保持一致。
背景信息
- 通过volume方式使用阿里云NAS存储卷
- 通过PV或PVC方式使用阿里云NAS存储卷
通过volume方式使用阿里云NAS存储卷
- 创建Pod,此处以创建Nginx Pod为例。
- 创建一个yaml文件,此处以nas-deploy.yaml为例。
- 将以下内容复制到nas-deploy.yaml中,并根据实际情况替换对应参数。
说明 设置极速型NAS的path时,需要以/share开头,例如:/share/k8s。
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: #请根据您的NAS信息配置volumeMounts节点和volumes节点。 - name: nas1 mountPath: "/data" volumes: - name: "nas1" flexVolume: driver: "alicloud/nas" options: server: "0cd8b4a576-grs79.cn-hangzhou.nas.aliyuncs.com" path: "/k8s" vers: "3" options: "nolock,tcp,noresvport"
表 1. 参数说明 参数 说明 server NAS存储卷的挂载点域名。 path NAS存储卷的挂载目录,支持挂载NAS子目录,且当子目录不存在时,会自动创建子目录并挂载。 说明 设置极速型NAS的path时,需要以/share开头,例如:/share/k8s。vers 定义NFS挂载协议的版本号,支持3和4.0版本,默认且推荐使用版本3。 mode 定义挂载目录的访问权限。 说明- 只有挂载NAS存储卷的子目录时才能设置权限,如果是根目录不能设置权限。
- 当NAS存储卷中数据量很大时,不建议配置mode,会导致执行挂载非常慢,甚至挂载失败。
options 定义挂载选项。不配置此参数时,v3版本的默认挂载选项为nolock、tcp、noresvport,v4.0版本的默认挂载选项为noresvport。 - 执行如下命令,创建Pod。
kubectl apply -f nas-deploy.yaml
nas-deploy.yaml请根据实际情况替换。
- 执行以下命令,获取已创建的Pod。
kubectl get pod
- 执行以下命令,验证挂载结果。
kubectl exec -ti nas-static-85xxxx-wb7s9 sh mount | grep nfs
nas-static-85xxxx-wb7s9为已创建的Pod,请根据实际情况替换。
如果回显包含如下类似信息,说明挂载成功。
通过PV或PVC方式使用阿里云NAS存储卷
- 创建PV。
您可以使用yaml文件或者通过阿里云容器服务控制台创建PV。
- 使用yaml文件创建PV。
- 创建一个yaml文件,此处以nas-pv.yaml为例。
- 将以下内容复制到nas-pv.yaml中。
说明 设置极速型NAS的path时,需要以/share开头,例如:/share/k8s。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas spec: capacity: storage: 5Gi storageClassName: nas accessModes: - ReadWriteMany flexVolume: driver: "alicloud/nas" options: server: "0cd8b4a576-uih75.cn-hangzhou.nas.aliyuncs.com" path: "/k8s" vers: "3" options: "nolock,tcp,noresvport"
重要参数说明请参见表 1。
- 通过容器控制台创建NAS存储卷。
- 登录容器服务管理控制台。
- 选择容器服务 - Kubernetes > 集群 > 存储卷,单击创建。
- 在创建存储卷对话框中,配置存储卷的相关参数。
说明 设置极速型NAS的子目录时,需要以/share开头,例如:/share/k8s。
表 2. 参数说明 参数 说明 存储卷类型 选择NAS。 数据卷名 配置NAS存储卷的名称,存储卷名在集群内必须唯一。本文以pv-nas为例。 存储驱动 支持Flexvolume和CSI。 总量 配置NAS存储卷的容量。 说明 所创建的存储卷容量不能超过磁盘容量。访问模式 包括ReadWriteMany和ReadWriteOnce,请根据需求选择。 挂载点域名 NAS存储卷的挂载点域名,例如:file-system-id.region.nas.aliyuncs.com,请根据实际情况替换。 子目录 NAS存储卷的子目录,以正斜线(/)开头。配置后将挂载指定的子目录。 - 如果NAS存储卷的根目录下没有此子目录,会自动创建再挂载。
- 您可以不填此项,默认挂载NAS存储卷的根目录。
说明 设置极速型NAS的子目录时,需要以/share开头,例如:/share/k8s。权限 设置挂载目录的访问权限,例如:755、644、777等。您可以不填此项,默认权限为NAS存储卷原来的权限。 说明- 只有挂载NAS存储卷的子目录时才能设置权限,如果是根目录不能设置权限。
- 当NAS存储卷中数据量很大时,不建议配置此参数,会导致执行挂载非常慢,甚至挂载失败。
权限模式 定义权限变更方式,支持非递归或递归方式。 - 非递归:执行权限变更时,只对挂载目录起作用,其子目录、包含的文件不进行变更权限。
- 递归:执行权限变更时,会对其子目录、包含的文件进行递归操作,全部变更权限。
版本 NFS挂载协议的版本号,支持3和4.0版本,默认且推荐使用版本3。 标签 为NAS存储卷添加标签。 - 完成配置后,单击创建。
- 使用yaml文件创建PV。
- 创建PVC。
您可以使用yaml文件或者通过阿里云容器服务控制台创建PVC。
- 使用yaml文件创建PVC。
- 创建一个yaml文件,此处以nas-pvc.yaml为例。
- 将以下内容复制到nas-pvc.yaml中。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nas spec: accessModes: - ReadWriteMany storageClassName: nas resources: requests: storage: 5Gi
- 通过容器控制台创建PVC。
- 选择存储卷 > 存储声明,单击创建。
- 在创建存储声明对话框中,配置存储声明的相关参数。
- 使用yaml文件创建PVC。
- 创建Pod,此处以创建Nginx Pod为例。
- 创建一个yaml文件,此处以nas-pod.yaml为例。
- 将以下内容复制到nas-pod.yaml中,并根据实际情况替换对应参数。
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
- 执行如下命令,创建Pod。
kubectl apply -f nas-pod.yaml
nas-pod.yaml请根据实际情况替换。
- 执行以下命令,验证挂载结果。
kubectl exec -ti nas-static-85xxxx-wb7s9 sh mount | grep nfs
nas-static-85xxxx-wb7s9为已创建的Pod,请根据实际情况替换。
如果回显包含如下类似信息,说明挂载成功。
在文档使用中是否遇到以下问题
更多建议
匿名提交