实验手册-14-PV和PVC

实验目的
- 熟悉 PV 和 PVC 的配置文件
- 了解不同的回收策略
实验准备
步骤1 安装软件包
yum install nfs-utils
步骤2 创建共享文件夹
mkdir /srv/nfs
步骤3 修改配置文件
vim /etc/exports
在文件中增加内容:
/srv/nfs 192.168.192.0/24(rw)
共享 /srv/nfs 目录给 192.168.192.0/24 网段下的所有人,并给予读写权限
步骤4 开启服务
systemctl start rpcbind nfs
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
步骤5 找小组内同学要一个IP地址,记下备用
修改配置文件,挂载同学的NFS共享
vim /etc/fstab
增加文件内容:
192.168.192.215:/srv/nfs /k8spv nfs4 defaults 0 0
把 192.168.192.215
换成同学的IP地址
步骤6 挂载
mkdir /k8spv
mount -a
步骤7 查看挂载是否成功
df | grep srv
有如下结果代表挂载成功
IP地址可能不同
此时我们在 /k8spv 目录下创建文件,可以被共享NFS的同学看到
任务一:挂载PV
步骤1 创建配置文件
vim pv.yaml
文件内容:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
path: /srv/nfs/pv1
server: 192.168.192.215
注意修改倒数第2行,pv1
改成 pv学号后两位
加载配置文件
kubectl apply -f pv.yaml
步骤2 查看创建的 PV
kubectl get pv

第5列 STATUS(状态)为 Available,代表创建的 PV 可用
步骤3 新建一个配置文件
vim pvc.yaml
文件内容:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: nfs
加载配置文件
kubectl apply -f pvc.yaml
步骤4 查看创建的 pvc
kubectl get pvc
查看刚才创建的 pv
kubectl get pv
状态和Claim发生变化,如上图和下图所示
步骤5 使用 PV
创建一个配置文件,运行一个Pod
vim pod.yaml
文件内容:
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: pod1
image: busybox
args:
- /bin/sh
- -c
- sleep 30000
volumeMounts:
- mountPath: "/mydata"
name: mydata
volumes:
- name: mydata
persistentVolumeClaim:
claimName: pvc1
步骤2 加载配置文件
kubectl apply -f pod.yaml
查看创建的 Pod
kubectl get pods
步骤3 等Pod的状态为 Running 后,进入容器中创建一个文件
kubectl exec pod1 -- touch /mydata/hello
步骤4 小组内的同学查看一下创建的文件
ls /srv/nfs/

任务二:回收PV
不使用PV时,需要回收
步骤1 删除 PVC
kubectl delete pod pod1
kubectl delete pvc pvc1
步骤2 查看PV
kubectl get pv
CLAIM 重新变为空白
步骤3 小组内同学查看文件是否存在
ls /srv/nfs
刚才创建的 hello 文件已经不存在,因为该 PV 的回收策略为 Recycle
作业一
修改 pv.yaml
文件,将回收策略改为 Retain
,然后重复执行任务一和任务二,查看最后文件是否消失
问题方案
1、没有权限创建文件
关键字:Permission Denied
解决方法一:
修改 /etc/exports
配置文件,小括号内增加内容

/srv/nfs 192.168.192.0/24(rw,no_root_squash)
解决方法二:
chown nfsnobody:nfsnobody -R /srv/nfs
2、Could not resolve host
优先检查 DNS