本文介绍如何通过Kubernetes内置的Volume功能,将NAS文件系统挂载至Kubernetes集群进行访问。
前提条件
使用限制
NAS文件系统在挂载连通性、文件系统数量及协议类型等方面存在相应的约束条件。详细信息,请参见使用限制。
在没有卸载NAS文件系统前,务必不要删除NAS挂载点,否则会造成操作系统无响应。
操作步骤
登录自建Kubernetes集群节点。
配置Kubernetes节点。
说明您需要为Kubernetes集群中的每个节点都进行配置。如果该集群有新增节点时,您也需要为其配置以下操作然后再将新增节点加入到Kubernetes集群中。
安装NFS客户端。具体操作,请参见安装NFS客户端。
执行以下命令,配置/etc/nfsmount.conf文件。
cat <<EOF >> /etc/nfsmount.conf [ Server "file-system-id.region.nas.aliyuncs.com" ] vers=3 Proto=tcp Lock=False resvport=False rsize=1048576 wsize=1048576 hard=True timeo=600 retrans=2 EOF
其中,
file-system-id.region.nas.aliyuncs.com
为NAS文件系统挂载点地址,请根据实际值替换。您可以在NAS控制台,单击目标文件系统,然后单击挂载使用,将鼠标放置在挂载地址列的图标上获取挂载点地址。说明仅推荐使用NFS v3协议挂载NAS文件系统。
以上配置参数均为必填参数,除
file-system-id.region.nas.aliyuncs.com
参数和vers
协议版本可修改外,其他参数无需修改。
验证文件系统与Kubernetes节点网络连通。
执行以下命令,尝试挂载NFS协议文件系统。
mount -t nfs file-system-id.region.nas.aliyuncs.com:/ /mnt
其中,
file-system-id.region.nas.aliyuncs.com
为NAS文件系统挂载点地址,请根据实际值替换。如果挂载失败,请先确认NAS挂载点域名是否能够
ping
通,并且是否连通2049端口。如果以上问题不存在,请使用检测工具进行排查。具体操作,请参见Linux挂载NFS文件系统挂载失败排查。执行以下命令,查看挂载信息。
mount | grep nfs | grep mnt
如果挂载参数包含vers=3、hard、noresvport、nolock等信息,则表示网络连通。
确认网络连通后,请执行
umount /mnt
删除挂载的NFS协议文件系统。
启动应用Pod通过Volume挂载使用NFS文件系统。
本文以启动一个nginx pod为例介绍通过Volume挂载使用NFS文件系统。
配置
nginx.yaml
。cat << EOF > ./nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - mountPath: /data name: test-nfs volumes: - name: test-nfs nfs: server: file-system-id.region.nas.aliyuncs.com # 阿里云NAS文件系统挂载点地址,请根据实际值替换。例如,7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com。 path: / # NAS文件系统目录路径。该目录必须为已经存在的目录或根目录。通用型NAS的根目录为“/”,极速型NAS的根目录为“/share”。 EOF
启用nginx pod使用NFS文件系统。
kubectl apply -f ./nginx.yaml
检查Pod是否正常启动及挂载NFS文件系统成功。
执行命令,查看Pod运行状态。
执行命令
kubectl get pods | grep nginx
返回信息
如果Pod运行状态为
Running
,则表示正常启动。
执行以下命令,查看挂载结果。
执行命令
kubectl exec nginx-deployment-9b9b684f5-mgrkh -- df -h /data
返回信息
如果返回如下类似信息,则表示挂载文件系统成功。