(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