NFS是网络文件系统Network File System的缩写,NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中,而在本地的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样。
kubernetes使用NFS共享存储有两种方式:
1.手动方式静态创建所需要的PV和PVC。
2.通过创建PVC动态地创建对应PV,无需手动创建PV。
下面对这两种方式进行配置并进行演示。
一、搭建NFS服务器
k8s集群准备,以这篇文章为例:https://www.toutiao.com/i6768745162030973447/?group_id=6768745162030973447
这里演示在master节点上部署NFS服务器。服务器操作系统:Centos7.5.
#master节点安装nfsyum -y install nfs-utils#创建nfs目录mkdir /data#修改权限chmod -R 777 /data#编辑export文件vim /etc/exports/data *(rw,no_root_squash,sync)#配置生效exportfs -r#查看生效exportfs#启动rpcbind、nfs服务systemctl restart rpcbind && systemctl enable rpcbindsystemctl restart nfs && systemctl enable nfs#所有node节点安装客户端 (很重要)yum -y install nfs-utils systemctl start nfs && systemctl enable nfs #查看 RPC 服务的注册状况rpcinfo -p localhost#showmount测试showmount -e 10.211.55.4
二、静态申请PV卷
添加pv卷对应目录,这里创建1个pv卷,则添加1个pv卷的目录作为挂载点。
#创建pv卷对应的目录mkdir -p /data/pv01#配置exportrsvim /etc/exports/data *(rw,no_root_squash,sync)/data/pv01 *(rw,no_root_squash,sync)#配置生效exportfs -r#重启rpcbind、nfs服务systemctl restart rpcbind && systemctl restart nfs
创建PV
下面创建1个名为pv01的PV卷,配置文件 nfspv01.yaml 如下:
apiVersion: v1kind: PersistentVolumemetadata: name: nfspv01 labels: pv: nfspv01spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Recycle storageClassName: nfs nfs: path: /data/pv01 server: 10.211.55.4
配置说明:
① capacity 指定 PV 的容量为 1G。
② accessModes 指定访问模式为 ReadWriteOnce,支持的访问模式有:
ReadWriteOnce – PV 能以 read-write 模式 mount 到单个节点。
ReadOnlyMany – PV 能以 read-only 模式 mount 到多个节点。
ReadWriteMany – PV 能以 read-write 模式 mount 到多个节点。
③ persistentVolumeReclaimPolicy 指定当 PV 的回收策略为 Recycle,支持的策略有:
Retain – 需要管理员手工回收。
Recycle – 清除 PV 中的数据,效果相当于执行 rm -rf /thevolume/*。
Delete – 删除 Storage Provider 上的对应存储资源,例如 AWS EBS、GCE PD、Azure
Dis