文章目录

  • 概要
  • 名词解释
    • 什么是Pod
    • 什么是StorgeClass
    • 静态PV和动态PV
    • PV和PVC的生命周期
  • PVC , PV和 StorageClass的关系
  • 小结

概要

最近,在看许多Kubenates的相关文章的时候,了解到了一个概念,是我之前不清楚的。PV&PVC 。那么今天就总结下这几天的收获。

在总结之前我先解释下PV和PVC是什么意思。

  • PV:Persistent Volume
  • PVC:Persistent Volume Claim

【通俗字面理解】

从英文的解释上看,大致可以理解为PV就是一个持久化的卷;PVC就是PV的声明


【docker层面理解】

谈到卷,相信学习过docker的小伙伴并不陌生。Volume用于持久化数据的一种机制。那么就可以把PV看做成docker里的卷,那么PVC又怎么理解呢?就是用于统一调用管理PV的。

【官方解释】

PV :持久化卷的意思,是对底层的共享存储的一种抽象
PVC(Persistent Volume Claim):是持久卷请求于存储需求的一种声明(PVC其实就是用户向kubernetes系统发出的一种资源需求申请。)


这里还需要明确几个职责:

  • 存储:存储工程师维护
  • PV: kubernetes管理员维护
  • PVC:kubernetes用户维护

所以kubernates引入了pvc的概念后,用户就很好的能够使资源的利用率达到最高

名词解释

上面在简单的了解了什么是PV和PVC之后,接下来根据上图所示,介绍几个概念。

概述:

  • 什么是Pod
  • 什么是StorageClass
  • 静态PV和动态PV
  • PV和PVC的生命周期

什么是Pod

Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。
大家都知道,docker是利用生成镜像在容器里运行的工具。
kubernates则是通过Pod承载容器进行运行的工具。
在k8s里一个Pod可以运行一个容器,也可以运行多个容器。不过最常用的是单个容器。

什么是StorgeClass

在上图种,我们可以看到Pod与我们的PVC进行绑定,换言之,Pod消耗的是PVC。然后PVC请求PV资源,而PV资源必须要是管理员事先创建好的。
这样一来就会存在一个问题,当我们的Pod请求的资源没有相应的PV去与PVC匹配的时候,这个时候就必须要管理员手动创建PV。二者之间必然会存在一定的误差,这个时候就引入了StorgeClass

可用于将存储资源定义为具有显着特性的类别(Class)而不是具体的PV,用户通过PVC直接向意向的类别发出申请,匹配由管理员事先创建的PV,或者由其按需为用户动态创建PV,这样做甚至免去了需要事先创建PV的过程。

静态PV和动态PV

在了解了StorgeClass机制后,我们就很好的理解什么是静态PV和动态PV

【静态】:
需要我们自己去手动创建,业务少的情况下可以用手动创建。

【动态】:
根据 yaml 文件里面的参数自动创建合适的 pv,业务量大或者静态 pv 无法满足需求的时候需要动态创建 pv。

PV和PVC的生命周期

其实不论是PV还是PVC,他们之间的关联关系都遵循着一个统一的生命周期:
资源创建–>资源绑定–>资源使用–>资源释放–>资源回收。这么一个生命周期。

【资源创建】
由管理员静态创建PV,或者由PVC动态创建PV。
【资源绑定】
由PVC根据Pod所需要的资源大小以及读取模式绑定PV。PV一旦被绑定,就被该Pod独占。
【资源使用】
PV一旦被PVC绑定,那么Pod就可以像使用Volume一样根据PVC的定义消耗PVC,进而PVC消耗PV
【资源释放】
用户删除PVC来释放PV
当存储资源使用完毕后,用户可以删除PVC,与该PVC绑定的PV将会被标记为“已释放”,但还不能立刻与其他的PVC进行绑定,通过之前PVC写入的数据可能还被留在存储设备上,只有在清除之后该PV才能再次使用
【资源回收】
Kubernetes根据PV设置的回收策略进行资源的回收
对于PV,管理员可以设定回收策略,用于设置与之绑定的PVC释放资源之后如何处理遗留数据的问题,只有PV的存储空间完成回收,才能供新的PVC绑定和使用

PVC , PV和 StorageClass的关系

  • PVC 描述的** 是 Pod 想要使用的持久化存储的属性** 。比如存储的大小、读写权限等。

  • PV 描述的则是一个具体的 Volume 的属性,比如 Volume 的类型、挂载目录、远程存储服务器地址等。

  • 而 StorageClass 的作用,则是充当 PV 的模板。并且,只有同属于一个 StorageClass 的 PV 和 PVC,才可以绑定在一起。

小结

pv,pvc实际上可以看作是接口和实现类的关系。
pvc定义了pod所需要的存储属性,pvc根据这个属性调用了某一个可以实现此存储能力的pv。
这样理解pv和pvc就比较轻松了。

浅析kubernates的pv和pvc相关推荐

  1. Kubernetes — PV、PVC

    目录 文章目录 目录 PV.PVC PV.PVC 的生命周期 通过 NFS 实现持久化存储 NFS Server 安装 NFS Client 挂载 Kubernetes 部署 nfs-client-p ...

  2. kubernetes 磁盘、PV、PVC

    6.1.介绍卷 6.1.1.卷的类型 emptyDir-用于存储临时数据的简单空目录 hostPath-用于将目录从工作节点的文件系统挂载到pod nfs-挂载到pod中的NFS共享卷. 还有其他的如 ...

  3. mysql time 5分钟_MySQL 使用 PV 和 PVC 每天5分钟玩转 Docker 容器技术(154)

    第154篇 MySQL 使用 PV 和 PVC 本节演示如何为 MySQL 数据库提供持久化存储,步骤为: 创建 PV 和 PVC. 部署 MySQL. 向 MySQL 添加数据. 模拟节点宕机故障, ...

  4. kubernetes系列11—PV和PVC详解

    kubernetes系列11-PV和PVC详解 原文:kubernetes系列11-PV和PVC详解 本文收录在容器技术学习系列文章总目录 1.认识PV/PVC/StorageClass 1.1 介绍 ...

  5. k8s核心技术-持久化存储(PV和PVC)---K8S_Google工作笔记0051

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们前面用nfs,进行持久化,可以做到把一些信息,持久的保存到一个nfs服务器中.网络存储中. ...

  6. MySQL 如何使用 PV 和 PVC?

    2019独角兽企业重金招聘Python工程师标准>>> 本节演示如何为 MySQL 数据库提供持久化存储,步骤为: 创建 PV 和 PVC. 部署 MySQL. 向 MySQL 添加 ...

  7. k8s数据持久化之statefulset的数据持久化,并自动创建PV与PVC

    StatefulSet是为了解决有状态服务的问题,对应的Deployment和ReplicaSet是为了无状态服务而设计,其应用场景包括: 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化 ...

  8. k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战

    目录 概念 Volumes ConfigMap && Secret hostPath 模版 emptyDir 模版 PV 模版 PVC 模版 实战 volumes - hostPath ...

  9. kubernetes中的PV、PVC

    目录 一.statfulset 1.创建顺序 2.收缩顺序 二.PV PVC 1.PV 状态/生命周期 2.PVC 3.nfs 4.PVC 三.emptyDir存储卷 四.hostPath存储卷 五. ...

最新文章

  1. 高水平文章发表必备-数据分析和文献解读技巧
  2. 新近爆出的runC容器逃逸漏洞,用户如何面对?
  3. OpenJudge 2796: 数字求和
  4. mapreduce分组统计_Mongodb的分组统计MapReduce
  5. 2011 ACM 0和1思想
  6. uygurqa输入法android,uygurqa维语输入法2021
  7. IMX6DL 串口篇
  8. windows传文件给linux工具
  9. 永久域名注册流程知识
  10. vue 实现点击选中div后, 右下角显示对号√
  11. c语言录制,C语言中如何录制屏幕
  12. 数控技术转行java_我29岁想转行数控却找不到工作
  13. android seekto实现_Android开发之音乐播放器的实现
  14. 80端口占用问题 -- steam社区打不开
  15. unity 穿山甲 广告关于如何将信息流广告和banner广告直接关闭窗口 而不是通过按钮
  16. linux终端登校园网,使用神州登陆接入校园网
  17. 陪孩子一起学python第二季第2集_跟我一起学python | 探究02
  18. ARM嵌入式系统期末总结
  19. 激光雷达网口连接的问题+ROS Melodic 配置Velodyne VLP16激光雷达
  20. 关于中医中药的思考-验医验药

热门文章

  1. Hive高级、Hive的元数据
  2. 拉姆达表达式实现对集合中的对象中的某个属性求和以及查询某个特定属性以及对特定属性求和以及针对集合根据某个属性以key-value形式分组
  3. java 弱智语言,初学java的一些弱智有关问题.麻烦
  4. 帮我写一篇10000字关于作业设计的论文
  5. box2d 碰撞检测_谁动了我的刚体——Box2D碰撞检测
  6. Qt Designer编辑伙伴
  7. PLM市场规模及行业趋势
  8. 死锁产生的4个必要条件?
  9. python elif报错_python循环的elif报错是什么原因
  10. 优秀硬盘分区管理工具--Partition Magic V8.0