1.在Master节点安装NFS服务,并启动nfs服务和设置自动开机服务
# yum install nfs-utils rpcbind -y
#以下是启动服务和设置自动开机服务
# systemctl start rpcbind
# systemctl enable rpcbind
# systemctl start nfs
# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
2.在Master节点配置共享文件目录,编辑nfs的配置文件
#以下是创建共享目录
# mkdir /nfsdata
# chmod -R 777 /nfsdata/
#以下是创建pv1目录,作为卷的映射
# mkdir /nfsdata/pv1/
#以下是配置共享目录
# vi /etc/exports
/nfsdata *(rw,no_root_squash,sync)
#以下是重新加载配置文件,使配置文件生效
# systemctl reload nfs
3.在Master节点查看nfs服务共享信息
# showmount -e
Export list for controller:
/nfsdata *
4 .在worker节点(工作节点)安装NFS服务
# yum install nfs-utils -y
# systemctl start nfs && systemctl enable nfs
5.创建一个nfs类型的PersistentVolume和创建一个nfs类型的PersistentVolumeClaim(请求物理存储),还要创建一个Pod (使用你的 PersistentVolumeClaim 作为存储卷)
# vi nfs-pv-volume.yml
kind: PersistentVolume
apiVersion: v1
metadata:
name: nfs-pv-volume
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
path: /nfsdata/pv1
server: 172.25.0.10
# kubectl apply -f nfs-pv-volume.yml
persistentvolume/nfs-pv-volume created
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nfs-pv-volume 1Gi RWO Recycle Available nfs 6s
# vi nfs-pvc-claim.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs-pvc-claim
spec:
storageClassName: nfs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
# kubectl apply -f nfs-pvc-claim.yml
persistentvolumeclaim/nfs-pvc-claim created
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nfs-pv-volume 1Gi RWO Recycle Bound default/nfs-pvc-claim nfs 4m26s
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nfs-pvc-claim Bound nfs-pv-volume 1Gi RWO nfs 27s
# vi nfs-pv-pod.yml
kind: Pod
apiVersion: v1
metadata:
name: nfs-pv-pod
spec:
containers:
- name: nfs-pv-pod
image: busybox
args:
- /bin/sh
- -c
- sleep 30000
volumeMounts:
- mountPath: "/mydata"
name: mydata
volumes:
- name: mydata
persistentVolumeClaim:
claimName: nfs-pvc-claim
# kubectl apply -f nfs-pv-pod.yml
pod/nfs-pv-pod created
6.测试PV是否可用
# kubectl exec nfs-pv-pod touch /mydata/hello
# ls /nfsdata/pv1/
hello
7.设置保留数据为Retain的策略
# vi nfs-pv-volume-retain.yml
kind: PersistentVolume
apiVersion: v1
metadata:
name: nfs-pv-volume
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /nfsdata/pv1
server: 172.25.0.10
# kubectl apply -f nfs-pv-volume-retain.yml
persistentvolume/nfs-pv-volume configured
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nfs-pv-volume 1Gi RWO Retain Bound default/nfs-pvc-claim nfs 4h15m
8.测试保留数据是否可用
# kubectl exec nfs-pv-pod touch /mydata/hello
# ls /nfsdata/pv1/
hello
# kubectl get pod
NAME READY STATUS RESTARTS AGE
nfs-pv-pod 1/1 Running 0 4h25m
#以下是删除pod
# kubectl delete pod nfs-pv-pod
pod "nfs-pv-pod" deleted
#以下是查看pv信息
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nfs-pv-volume 1Gi RWO Retain Released default/nfs-pvc-claim nfs 4h30m
#以下是查看数据是否存在
# ls /nfsdata/pv1
hello