k8s SC PV PVC
所属分类 k8s
浏览量 353
存储类(StorageClass)定义了持久卷声明(PersistentVolumeClaim)所需的属性和行为,
持久卷(PersistentVolume)是实际的存储资源,
持久卷声明(PersistentVolumeClaim)是 Pod 对持久卷的请求。
在k8s中,管理存储一直就是管理
计算实例 存储管理
PersistentVolume系统为用户和集群管理人员提供了两个API,这两个API为用户屏蔽了底层存储的细节。
这两个API对象就是PersistentVolume和PersistentVolumeClaim
PV是集群中的存储资源,由管理员提供或者通过 storage class 动态提供。
PV的生命周期与使用PV的pod的生命周期没有任何关系。
PV的实际存储可能是在NFS、iSCSI或者其他云存储系统中
PVC是用户对于存储资源的请求。
PVC和集群中的pod相似,pod消费node中的资源(cpu、memory等),而PVC则是消费PV中的资源。
Pod可以指定特定数量的资源(cpu和内存),而PVC则可以请求指定大小的存储空间以及读写模式。
由于用户的需求多种多样,静态配置的PV难以满足用户的需求,因此就需要storge class根据用户的需求动态生成PV。
当PVC创建后,k8s会从PV中选择一个和PVC进行匹配,用作此PVC的存储。
Provisioning
准备PV资源的方式 静态创建和动态创建
静态创建PV时主要包含以下三个步骤
由集群管理员根据存储配置预分配PV对象;
用户根据实际需求创建PVC对象。当用户创建PVC对象之后,集群会为PVC对象匹配合适的PV并进行绑定。将PV和PVC对象进行绑定后,PVC就可以作为存储资源来使用;
用户将PVC作为存储对象挂载到Pod中进行使用。
动态创建
为了开启PVC基于storage class来动态申请存储的功能,集群管理员需要在API server中开启 DefaultStorageClasss控制器。
动态创建过程主要包含如下三个步骤:
集群管理员不再预分配PV对象,而是创建模板文件Storage Class。此模板文件是后面PVC对象申请存储资源时创建资源PV的模板;
用户基于存储需求创建PVC对象,并在PVC的资源清单中指定创建存储的Storage Class名称。
在提交完 PVC之后,K8s 集群中的相关组件就会根据 PVC 以及清单中对应的 StorageClass 动态生成 PV对象,并将PV和PVC 进行绑定;
用户将PVC作为存储对象挂载到Pod中进行使用。
Binding
在k8s集群中,当请求指定存储空间和权限模式的PVC被创建之后,master中的控制循环(control loop)会基于list-watch机制监听到新创建的PVC,
并且尽可能匹配对应的PV,如果匹配不到,就会基于定义来去确定是否动态创建PV以满足PVC,然后这个控制循环会将PV和PVC绑定在一起。
用户得到的存储空间至少是用户申请的空间大小,也可能得到比申请的更多的空间
如果匹配不到对应的PV,PVC就会一直保持为未绑定,只有当PVC和PV绑定之后才可用
Using
pod将PVC作为存储来使用。
上一篇
下一篇
mybatis关闭一级二级缓存
Eureka 和 ZooKeeper 注册中心 区别
HTTPS加密过程
k8s pod
docker save 和 docker export
docker 容器问题排查