Kubernetes-PersistentVolumeClaim(PVC)介绍
1 PVC介绍
PVC是用户层面,作为对存储资源的需求申请,主要包括了存储空间大小、访问模式、PV的选择条件、存储类别等信息的设置。
2 PVC的参数详解
2.1 PVC的yaml模板
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc1
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nfs-stoarge
selector:
matchLabels:
pv: test-pv1
2.2 PVC参数说明
spec.accessModes:访问模式;描述用户应用对存储资源的访问权限。
- RWO:ReadWriteOnce,仅允许单个节点挂载进行读写;
- ROX:ReadOnlyMany,允许多个节点挂载且只读;
- RWX:ReadWriteMany,允许多个节点挂载进行读写;
spec.resources.requests.storage:资源请求的存储大小;spec.storageClassName:存储卷模式,指定一个StorageClass资源对象的名称,具有特定类别的PV只能与请求了该类别的PVC进行绑定;(动态存储);当然,也可以设置为spec.storageClassName=“”,未设置特定类型的PV只能与不请求任何类型的PVC进行绑定(静态存储)。spec.selector.matchLabels: PV的选择条件,可以通过标签匹配进行PV绑定;也可以通过spec.selector.matchExpressions进行条件标签描述;
3 PVC的生命周期
$ kubectl get pvc

PVC一共也有4个生命周期阶段:Available/Bound/Released/Failed
- Available: 可用状态,无PV绑定;
- Bound:绑定状态,已经和某个PV绑定;
- Released:释放状态,被绑定的PV已删除,资源释放,但没有被集群回收;
- Failed:失败状态,自动资源回收失败;
4 PVC的常用命令
- 创建(yaml的方式)
$ kubectl create -f pvc.yaml - 删除
$ kubectl delete pvc pvc_name - 查看所有PVC
$ kubectl get pvc - 查看某个PVC
$ kubectl get pvc pvc_name - 查看详情
$ kubectl describe pvc pvc_name
注意: 若在某个命名空间下,以上命令可以加上-n ns_name
5 PVC和PV的绑定
5.1 PV和PVC的生命周期

by 《k8s 权威指南》
其实,使用共享存储就几步:
Pod(Deployment等配置好PVC)—>PVC—>PV—>存储资源。
资源供应
PVC使用存储资源可以通过静态绑定或者动态绑定,静态模式就是集权管理员预先创建对应的PV对存储特性进行设置;动态模式就是集权管理员预先创建好StorageClass资源对后端存储进行描述,PVC创建时对存储类型进行声明,PVC创建后,k8s会自动创建合适的PV与PVC进行绑定。资源绑定
创建好PVC后,PVC会在已存在的PV中选择合适的PV进行绑定(可以通过标签进行特定绑定,也可以不通过标签,系统会自动选择合适(容量大小等参数)的PV进行绑定。),绑定成功,状态变成Bound,且该PV被对应的PVC独占绑定,不可以再被其他PVC绑定,除非该PVC释放。若在k8s系统中没有找到合适的PV,则PVC一直处于Pending状态。资源使用
在Deployment等资源中,通过spec.template.spec.volumes:进行PVC挂载路径设置。
spec:
tempeate:
spec:
containers:
- name: container1
image: image1
volumeMounts:
- name: volume1
mountPath: /data/dir1
volumes:
- name: volume1
persistentVolumeClaim:
claimName: pvc1
资源释放
删除PVC,与该PVC绑定的PV状态就会变成“Released”,该PVC在存储设备上的数据删除后,对应的PV才能与其他的PVC进行绑定。资源回收
PV中可以通过spec.persistentVolumeReclaimPolicy设置回收策略,这个主要用于绑定的PVC删除后,资源释放后如何处理该PVC在存储设备上写入的数据。
- Retain:保留,删除PVC后,PV保留数据;
- Recycle:回收空间,删除PVC后,简单的清除文件;(NFS和HostPath存储支持)
- Delete:删除,删除PVC后,与PV相连接的后端存储会删除数据;(AWS EBS、Azure Disk、Cinder volumes、GCE PD支持)
5.2 手动创建pv进行绑定
我们可以通过标签的方式,将pvc绑定到特定的pv上。需要做两步,一个是pv的yaml标签,另一步是pvc的标签匹配。

by 《k8s权威指南》
举例:
- pv的yaml需要有
metadata.labels进行标签标记;
如:
[root@k8s /pv_test]# vim test_pv1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv1
labels:
pv: test-pv1
spec:
capacity:
storage: 2Mi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /date-nfs/k8s
server: 10.139.12.14
- pvc的yaml里需要有
spec.selector.matchLabels进行标签匹配。
[root@k8s /pvc_test]# vim test_pvc1.yaml
#persistent Volume Claim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc1
namespace: t1
spec:
#storageClassName: managed-nfs-storage
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Mi
selector:
matchLabels:
pv: test-pv1
创建pv和pvc
$ kubectl create -f test_pv.yaml
$ kubectl create -f test_pvc.yaml查看pv
$ kubectl get pv test-pv1

查看pvc
$ kubectl get pvc test-pvc1

我们可以看出test-pvc1持久卷声明绑定到了test-pv1这个持久卷上了。
5.3 动态卷配置StorageClass
除了pvc绑定手动创建pv的方式,我们还可以通过动态卷配置StorageClass跳过手动pv的方式。

by 《k8s权威指南》
- 我们先要创建一个StorageClass资源。
[root@k8s /sc_test]# vim test_storageclass1.yaml
apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
name: course-nfs-storage
provisioner: fuseim.pri/ifs
- 然后在pvc的yaml中增加
spec.storageClassName进行配置。
[root@k8s /pvc_test]# vim test_pvc_sc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: course-nfs-storage
resources:
requests:
storage: 1Mi
创建StorageClass和PVC资源
$ kubectl create -f test_storageclass1.yaml
$ kubectl create -f test_pv_sc.yaml查看SC
$ kubectl get sc course-nfs-storage

查看SC详情
$ kubectl describe sc course-nfs-storage

查看PVC
$ kubectl get pvc test-pvc

查看PV
$ kubectl get pv

可以看到一个自动创建的pv,它的策略是Delete,即pvc删除后会自动删除。
Kubernetes-PersistentVolumeClaim(PVC)介绍的更多相关文章
- Kubernetes Pv & Pvc
Kubernetes PV & pvc 介绍 PersistentVolume(pv)和PersistentVolumeClaim(pvc)是k8s提供的两种API资源,用于抽象存储细节.管理 ...
- 二十四、PV与PVC介绍
PV 与 PVC介绍 一.概念介绍 PersistentVolume (PV) 是由管理员设置的存储,它是群集的一部分.就像节点是集群中的资源一样,PV 也是集群中的资源. PV 是Volume 之 ...
- Kubernetes中StatefulSet介绍
StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.11.如何搭建环境可以参考kubeadm安装kubernetes V1.11.1 集群 ...
- Kubernetes 存储系统 Storage 介绍
本文环境为Kubernetes V1.11,操作系统版本为 CentOs 7.3,Kubernetes集群安装可以参考 kubeadm安装kubernetes V1.11.1 集群 容器中的存储都是临 ...
- K8s - Kubernetes重要概念介绍(Cluster、Master、Node、Pod、Controller、Service、Namespace)
K8s - Kubernetes重要概念介绍(Cluster.Master.Node.Pod.Controller.Service.Namespace) Kubernetes 是目前发展最 ...
- Kubernetes 存储系统 Storage 介绍:PV,PVC,SC
要求:先了解数据docker容器中数据卷的挂载等知识 参考网址: https://www.cnblogs.com/sanduzxcvbnm/p/13176938.html https://www.cn ...
- [Kubernetes]PV,PVC,StorageClass之间的关系详解
在Kubernetes中,容器化一个应用比较麻烦的地方莫过于对其"状态"的管理,而最常见的"状态",莫过于存储状态. 在[Kubernetes]深入理解Stat ...
- 一、Kubernetes系列之介绍篇
•Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什 ...
- kubernetes资源类别介绍
类别 名称 资源对象 Pod.ReplicaSet.ReplicationController.Deployment.StatefulSet.DaemonSet.Job.CronJob.Horizon ...
- Kubernetes PV/PVC使用实践
转载于https://www.cnblogs.com/ericnie/p/7733281.html pv,pvc的概念不解释了,之前在registry中已经使用过PV和PVC,现在想把WebLog ...
随机推荐
- pycharm debug的操作
###################################### """ pycharm的debug按钮是右上角的一个小虫子, debug,要打断点,debu ...
- n的m划分
n的m划分: dp[i][j]表示j的i划分,也就是将j颗球放入i个袋子里面,最后的答案是dp[m][n] 状态转移方程为dp[i][j]=dp[i-1][j]+dp[i][j-i]; 划分方法有两种 ...
- [LC] 46. Permutations
Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3] O ...
- Pulsar、ZooKeeper、BookKeeper 作用简述
Pulsar:采取了存储计算分离的技术ZooKeeper 集群的作用和在 Kafka 中是一样的,都是被用来存储元数据.BookKeeper 集群则被用来存储消息数据.BookKeeper 有点儿类似 ...
- python库之-------Pandas
包括两个数据结构:DataFrame和Series 官方文档地址: pandas https://pandas.pydata.org/pandas-docs/stable/index.html ser ...
- django框架进阶-admin-长期维护
############### django--admin的使用 ################ # django后台管理: # 第一步: # 在settings文件中修改语言和时区 L ...
- java中的锁——列队同步器
队列同步器 队列同步器(AbstractQueuedSynchronizer)为实现依赖于先进先出 (FIFO) 等待队列的阻塞锁和相关同步器(信号量.事件,等等)提供一个框架.此类的设计目标是成为依 ...
- 10X genomics|cell base|in-vivo based|model organisms|SBI|
生命组学-药物基因组学 精准医学的内容有个人全基因组测序,移动可穿戴设备,它可以实时监测,深度学习模型预测疾病,对疾病预测做到有效.安全和可控. 药物基因组学就是研究疾病.化合物和靶点之间的关系,关键 ...
- win10安装3DMAX失败,怎么强力卸载删除注册表并重新安装
一些搞设计的朋友在win10系统下安装3DMAX失败或提示已安装,也有时候想重新安装3DMAX的时候会出现本电脑windows系统已安装3DMAX,你要是不留意直接安装3DMAX,只会安装3DMAX的 ...
- Jquery中$(document).ready() 和 JavaScript中的window.onload方法 比较
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 win ...