k8s之PV & PVC

PV : PersistentVolume(持久化卷)

它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。

PVC:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明。

PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存,而 PVC 可 以请求特定的存储空间和访问模式。

以NFS作为示例:

先在各节点安装nfs服务:

1、关闭防火墙 

systemctl stop firewalld.service

systemctl disable firewalld.service

2、安装配置nfs

yum -y install nfs-utils rpcbind

3、设置共享目录的权限,chmod 755 $path (假设这里的path为 /data/k8s)【server端需配置】

配置NFS: 默认配置文件是 /etc/exports ,添加以下信息

/data/k8s *(rw,sync,no_root_squash)

配置说明:

/data/k8s:是共享的数据目录
* :表示任何人都有权限连接,当然也可以是一个网段,一个 IP,也可以是域名

rw:读写的权限
sync:表示文件同时写入硬盘和内存
no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名 使用者,通常它的 UID 与 GID,都会变成 nobody 身份

启动nfs服务:先启动 rpcbind 再启动 nfs

systemctl start rpcbind 

systemctl enable rpcbind 

systemctl start nfs 

systemctl enable nfs 

可以通过以下指令可以确认nfs是否启动成功:

rpcinfo -p|grep nfs

systemctl status nfs  

查看具体目录挂载权限:  cat /var/lib/nfs/etab

showmount -e $server_ip 查看nfs 服务端的是否有共享目录。【共享文件的服务器为server端,其他的为client端】

 mount -t $server_ip:$path  $client_path  挂载到指定路径

可在client端 df -h 查看挂载目录

使用yaml文件创建pv

 

 kubectl get pv 可查看pv

使用yaml文件创建pvc,这里可以看到pv与pvc不存在任何的绑定的行为,是因为在k8s中pvc会自动去匹配适合的pv。

主要是依据 labels、accessmodes、storage进行自动匹配的。

【注意】这里要求pv满足或超过 pvc的条件才会去匹配的。

譬如:pv的storage为2Gi; pv的storage为1Gi; 在 labels、accessmodes 符合的情况下,是可以自动匹配绑定的

pvc已经绑定好pv了,就在pod中进行挂载了。 

以下通过创建deployment 和service进行测试。

原文地址:https://www.cnblogs.com/czz-zone/p/14212634.html