可以通过阿里云提供的 Flexvolume 插件使用阿里云 NAS 文件存储服务。
前提条件
使用存储卷时请将 Flexvolume 插件更新到最新版本。
背景信息
使用 Flexvolume 插件,您可以通过 Volume 方式使用阿里云 NAS 数据卷或者通过 PV/PVC 方式使用阿里云 NAS 数据卷。
参数说明:
- server:为 NAS 数据盘的挂载点。
- path:为连接 NAS 数据卷的挂载目录,支持挂载 NAS 子目录,且当子目录不存在时,会自动创建子目录并挂载。极速NAS的Path需要以 /share 开头。
- vers:定义 NFS 挂载协议的版本号,支持v3 和 v4.0,默认使用版本v3且推荐使用此版本。
- mode:定义挂载目录的访问权限,注意挂载 NAS 盘根目录时不能配置挂载权限。挂载目录中文件数量很大时,配置 mode 会导致执行挂载非常慢,甚至挂载失败。
- options:定义挂载参数,不配置此项时,v3版本的挂载默参数为
nolock,tcp,noresvport
,v4.0版本挂载的默认参数为noresvport
。
直接通过 volume 使用
使用nas-deploy.yaml文件创建 Pod。
- 创建并复制以下内容到nas-deploy.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: 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"
- 执行如下命令,创建Pod。
kubectl apply -f nas-deploy.yaml
通过 PV/PVC 使用
- 创建 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-uih75.cn-hangzhou.nas.aliyuncs.com"
path: "/k8s"
vers: "3"
options: "nolock,tcp,noresvport"
- 通过控制台界面创建云盘数据卷
- 登录容器服务管理控制台。
- 在 Kubernetes 菜单下,单击左侧导航栏中的,进入存储与存储声明页面。
- 在存储卷页签,选择所需的集群,单击创建。
- 在创建存储卷对话框中,配置存储卷的相关参数。
- 存储卷类型:本示例中为NAS。
- 数据卷名:创建的数据卷的名称。数据卷名在集群内必须唯一。本例为 pv-nas。
- 总量:所创建存储卷的容量。注意不能超过磁盘容量。
- 访问模式:默认为 ReadWriteMany。
- 挂载点域名:集群在 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耗时长,从而导致挂载、卸载操作失败的可能,请谨慎使用。
- 版本:所创建存储卷的版本。
- 标签:为该存储卷添加标签。
- 完成配置后,单击创建。
- 创建 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