今天尝试学习一下k8s的pv&pvc,并记录下实验的过程
pv&pvc简介
k8s提供了emptyDir,hostPath,rbd,cephfs等存储方式供容器使用,不过这些存储方式都有一个缺点:开发人员必须得知指定存储的相关配置信息,才能使用存储.例如要使用cephfs,Pod的配置信息就必须指明cephfs的monitor,user,selectFile等等,而这些应该是系统管理员的工作.对此,k8s提供了两个新的API资源:PersistentVolume,PersistentVolumeClaim
PV(PersistentVolume)是管理员已经提供好的一块存储.在k8s集群中,PV像Node一样,是一个资源
PVC(PersistentVolumeClaim)是用户对PV的一次申请.PVC对于PV就像Pod对于Node一样,Pod可以申请CPU和Memory资源,而PVC也可以申请PV的大小与权限
有了PersistentVolumeClaim,用户只需要告诉Kubernetes需要什么样的存储资源,而不必关心真正的空间从哪里分配,如何访问等底层细节信息;这些Storage Provider的底层信息交给管理员来处理,只有管理员才应该关心创建PersistentVolume的细节信息
实验
实验环境:
192.168.122.10:host1,Master
192.168.122.20:host2,Node
192.168.122.30:host3,Node
目的:使用nfs类型的PV,并使用Job验证PV创建是否创建成功
1. 在host1上创建nfs服务器,用于提供存储
安装nfs服务端:1
2
3
4[[email protected] kube]# yum install nfs-utils rpcbind
...
Installed:
nfs-utils.x86_64 1:1.3.0-0.54.el7 rpcbind.x86_64 0:0.2.0-44.el7
创建用于nfs服务的存储文件夹:1[[email protected] kube]# mkdir -p /data/nfs
编辑/etc/exports文件:1
2[[email protected] kube]# vim /etc/exports
/data/nfs 192.168.122.0/24(rw,sync)
开启nfs服务:1[[email protected] kube]# systemctl start nfs-server.service
检验是否开启成功:1
2
3[[email protected] kube]# showmount -e
Export list for host1:
/data/nfs 192.168.122.0/24
2. 创建pv
编辑pv资源的配置文件:1
2
3
4
5
6
7
8