(1)每台机器安装NFS客户端

$ yum install nfs-utils -y

(2)在k8s-node01(192.168.1.34)启动nfs

[root@k8s-node01 ~]# systemctl start nfs-server

(3)在k8s-node01(192.168.1.34)查看nfs支持的版本

[root@k8s-node01 ~]# cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

(4)在k8s-node01(192.168.1.34)上创建一个共享目录

[root@k8s-node01 ~]# mkdir  -p  /data/nfs

(5)在k8s-node01(192.168.1.34)编辑授权文件,这里网段根据自己主机来定,我这里网段是192.168.1.0/24

[root@k8s-node01 ~]# vim /etc/exports
/data/nfs/ 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

(6)在k8s-node01(192.168.1.34)配置生效

[root@k8s-node01 ~]# exportfs -r

(7)在k8s-node01(192.168.1.34)重新加载NFS

[root@k8s-node01 ~]# systemctl reload nfs-server

(8)在每台主机上查看是否可以成功挂载

$ showmount -e 192.168.1.34

Export list for 192.168.1.34:
/data/nfs 192.168.1.0/24

2、在k8s-master01节点上定义基于NFS的PV

$ vi nfs-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs-storage
  nfs:
    path: /data/nfs
    server: 192.168.1.34

3、在k8s-master01节点上应用

$ k apply -f nfs-pv.yaml

4、在k8s-master01节点上定义PVC

$ vi nfs-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  storageClassName: nfs-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

5、在k8s-master01节点上应用

$ k apply -f nfs-pvc.yaml

6、在k8s-master01节点上定义Pod

$ vi  nfs-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nfs-pod
spec:
  containers:
  - name: nfs-container
    image: nginx:1.21.6
    volumeMounts:
    - name: nfs-storage
      mountPath: /data
  volumes:
  - name: nfs-storage
    persistentVolumeClaim:
      claimName: nfs-pvc

7、在k8s-master01节点上应用

$ k apply -f nfs-pod.yaml

8、测试验证

在192.168.1.34主机上/data/nfs目录下创建nfs-test文件

$ cd /data/nfs/
$ touch nfs-test
$ echo "xxxxxx"   > nfs-test

进入nfs-pod验证查看

$ k exec -it nfs-pod  bash
$ cat data/nfs-test
xxxxxx

9、恢复

$ k delete -f nfs-pod.yaml,nfs-pvc.yaml,nfs-pv.yaml