树莓派K8s集群配置NFS持久化存储出现版本传输协议不支持报错
NFS 协议不支持错误排查与解决方案
排查步骤
- 校验NFS服务端支持的协议版本:进入NFS服务端Pod执行
cat /proc/fs/nfsd/versions,确认输出中包含的可支持版本(+号开头为已开启版本)。 - 校验集群节点NFS客户端依赖:在所有工作节点执行
dpkg -l | grep nfs-common,确认已安装NFS客户端组件,树莓派系统默认不会预装该依赖。 - 手动挂载验证:任选集群节点,创建临时目录后执行挂载测试,分别指定不同版本验证可用性:
# 测试NFSv4 mount -t nfs -o vers=4 10.96.0.11:/mysql /mnt/test # 测试NFSv3 mount -t nfs -o vers=3 10.96.0.11:/mysql /mnt/test - 校验共享路径存在性:进入NFS服务端Pod执行
ls /exports,确认已提前创建mysql子目录且权限配置正确。
解决方案
- 修正NFS PV的服务端地址:你当前PV配置中填写的
10.244.19.5为NFS服务的PodIP,Pod重启后会发生变更,需要替换为你预先配置的NFS Service固定ClusterIP10.96.0.11。 - 安装全节点NFS客户端依赖:所有集群节点执行以下命令安装依赖:
sudo apt update && sudo apt install -y nfs-common - 明确指定NFS挂载参数:在NFS PV配置中添加mountOptions字段,指定测试可用的NFS版本,同时添加nolock参数适配MySQL的文件锁需求,修改后的PV配置如下:
apiVersion: v1 kind: PersistentVolume metadata: name: mysql-nfs-volume labels: directory: mysql spec: capacity: storage: 200Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: slow mountOptions: - vers=4 - nolock - tcp nfs: path: /mysql server: 10.96.0.11 - 提前创建共享子目录:进入NFS服务端Pod执行以下命令创建目录并配置权限:
mkdir /exports/mysql chmod 777 /exports/mysql - 适配多版本支持:如果仍有报错,可在NFS服务端Deployment的容器env中添加以下参数开启NFSv3支持:
env: - name: SHARED_DIRECTORY value: /exports - name: OPTIONS value: "-V 3"
内容的提问来源于stack exchange,提问作者Proximo
相关产品推荐
相关产品推荐

