当前位置: 首页 > article >正文

六、k8s:pv和pvc

pv和pvc:

静态

动态----------->自动分配

pv-------persistent volume 持久化存储卷,描述或者定义存储卷的类型。一般都是由运维工程师定义好的,集群范围内的存储概念,代表的是实际的存储空间,本地磁盘,网络系统文件(nfs),云存储。pv创建成功之后,独立于pod的,不依赖于特定的pod资源。

pvc------persistent volume claim 用户对存储资源的请求,也就是创建pod的时候,我们定义好了对于存储卷的要求(大小,存储类型),在集群当中寻找一个合适的存储资源(pv),和这个pv进行绑定,然后使用。

在使用的过程中,被绑定的pv不可以再被其他pvc请求,当pod生命周期结束之后,pv的资源可以被释放,就可以被后续的请求继续使用(设置的pv类型,以及数据是否保留)。

pv和pvc之间的生命周期的关系:

1、provisioning(配置)--------------》匹配对象pv------------》绑定------------》使用----------------》释放--------------------》回收(有不同的策略)

2、pv的状态:

Available:表示pv的状态可用,且未被其他pv绑定

只有状态是Available的pv可以被pvc请求和绑定使用。

Reclaiming:回收状态,以及释放,根据回收策略,把pv的资源进行回收,供下一次的pvc继续使用

bound:绑定,pv和pvc已经绑定,可以正常使用

released:已释放的状态,绑定解除,正在等待资源回收,不可被请求使用

Failed:失败,pv的自动回收失败。

3、回收策略:

Retain 保留,即使pv和pvc解除绑定,之前的数据也会保留

Delete 删除,动态卷可以实现,不仅是删除数据,而且会把pv也一并删除

Recycle 自动回收(自动删除),绑定会被解除,数据也被删除,然后自动的把pv的状态恢复到Available的状态。

4、读写模式和挂载方式:

ReadWriteOnce RWO  存储方式可以读写,但是只能被单个pod挂载

ReadOnlyMany: ROX 存储方式只能读,可以被多个pod进行挂载

ReadWriteMany  RWX 存储可以读写,而且可以被多个pod进行挂载*

5、挂载卷的类型

emptyDir

hostPath:不支持ReadOnlyMany和ReadWriteMany

nfs:三种模式都可以使用

ISCSI:不支持ReadWriteMany模式(基本上没有)

静态pv:

1、nfs配置pv的底层,存储空间

作为5个共享目录暴露出去,作为pv使用

2、配置pv,设置pv的存储大小和读写类型

3、创建pvc,配置设置的pv,然后绑定使用

数据恢复

设置回收策略  可以不写,默认即为reta

工作中根据业务的需要,开发提前约定好了,需求的规格,运维人员把pv创建好,等着上线使用即可。

动态pv:

k8s机制提供了一个插件

stroagecalss--------->创建pv的模板,创建pvc之后,找到对应的stroagecalss来完成pv和pvc之间的绑定。

stroagecalss+NFS来实现动态的pv

卷插件:k8s本身不支持通过nfs创建动态pv,外部的存储插件来实现pv的分配。

prosisioner,存储卷分配器,外部存储卷的创建会来自动在nfs服务器创建pv。

nfs-client provisioner:

当pvc请求时,会自动在nfs服务器上创建pv,然后把pvc的请求实现绑定,从而访问nfs的存储。

aws-ebs provisioner:

Amazon的卷协作

local-storage provisioner:本地节点创建pv,用于测试或者开发环境

external-storage provisioner:也是支持外部存储的自动创建pv,不支持nfs模式。

nfs-client provisioner:只要有一个目录就可以实现不同pvc的请求。

配置过程:

1、创建好共享的目录

2、配置nfs-client provisioner的集群访问权限

能够创建pv,能够获取和绑定pvc的请求,获取storageclass创建的资源。

权限组成三部分

1)、账号……-访问集群
2)、访问集群的规则,账号拥有的权限
3)、把账号的权限绑定到集群当中去

selflink:是api的资源对象之一,表示资源对象在k8s api中的自身链接,唯一标识符

用唯一标识来对集群当中的资源对象进行区分。

3、部署和安装provisioner的插件

4、实现自动的pv和pvc

1、创建好共享的目录

2、配置nfs-client provisioner的集群访问权限

kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml

kubectl delete pods kube-apiserver -n kube-system 

3、部署和安装provisioner的插件

4、实现自动的pv和pvc

pvc.yaml

动态pv的回收策略不包括回收策略


http://www.kler.cn/a/552035.html

相关文章:

  • Python 基础-使用dict和set
  • 胶囊网络动态路由算法:突破CNN空间局限性的数学原理与工程实践
  • Unity合批处理优化内存序列帧播放动画
  • spring的核心配置
  • 图数据库Neo4j面试内容整理-Neo4j的性能
  • HashSet 的底层原理(简单易懂)
  • deepseek蓝耘云端智能助手:让AI成为你专属的智慧助理
  • Git 使用指南:避免使用 merge 的完整流程
  • Jenkins 给任务分配 节点(Node)、设置工作空间目录
  • 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1)
  • 华为交换机堆叠技术简介配置
  • 生成艺术与审美图灵测试:当算法成为艺术创作者
  • 路由基础 | 路由引入实验 | 不同路由引入方式存在的问题
  • 探秘Transformer系列之(3)---数据处理
  • 力扣-二叉树-98 验证二叉搜索树
  • 【Linux】在 ubuntu 18.04 arm 容器中安装ROS环境
  • 反向代理模块kd
  • 基于ARM的人脸识别系统的研究
  • Next.js【详解】获取数据(访问接口)
  • 【基础架构篇十五】《DeepSeek权限控制:RBAC+ABAC混合鉴权模型》