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

8、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的状态可用,且未被其他pvc绑定,只有Available才可以被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:三种模式都可以使用

静态pv实操

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

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

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

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

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

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

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

运行脚本之后,可以发现pv创建成功。

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

运行脚本之后,可以发现我们创建的pvc1已经绑定pv02

恢复

将pv与pvc解绑

edit pv 02后删除如下字段,保存退出即可恢复pv状态成Available。

回收策略

动态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的存储。只要有一个目录就可以实现不同pvc的请求。

配置过程

1、创建好共享的目录

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

  • 为了可以能够创建 pv ,能够获取和绑定pvc的请求,获取storageclass创建的pv的资源。

     权限三部分组成

  1. 账号——>访问集群
  2. 访问集群的规则,账号拥有的权限
  3. 把账号的权限绑定到集群当中去

selflink:是api的资源之一,表示资源对象在k8s api中的自身链接,唯一标识,用唯一标识来对集群当中的资源对象进行区分。

3、部署和安装provisioner的插件

动态pv的回收策略没有回收策略,只有保留和删除。

1、创建好共享的目录

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

首先创建 Service Account 账户,用来管理 NFS Provisioner 在 k8s 集群中运行的权限

接着屏蔽selflink字段,以防报错,添加如下false一行内容

vim /etc/kubernetes/manifests/kube-apiserver.yaml

kubectl delete pods kube-apiserver -n kube-system 

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

最后运行yml文件

3、部署和安装provisioner的插件

4、实现自动的pv和pvc

首先创建 StorageClass,负责建立 PVC 并调用 NFS provisioner 进行预定的工作。

  • RECLAIMPOLICY:pv的回收策略
  • VOLUMEBINDINGMODE:Immediate 当用pvc请求时,会立刻绑定一个可用的pv。
  • ALLOWVOLUMEEXPANSION:自动挂载,允许扩展大小。

然后使用上面静态pv创建的pvc脚本文件,添加如下一段,表示向class请求pv,让 PV 与 PVC 建立关联。

最后可以发现我们的共享目录已经生产

相关文章:

  • MATLAB中contains函数用法
  • TLQ-CN10.0.2.0 (TongLINK/Q-CN 集群)部署指引 (by lqw)
  • 《探秘Downpour SGD算法:原理与多元应用场景解析》
  • 基于角色访问控制的UML 表示
  • 网络营销新宠:http代理ip为广告投放精准定位保驾护航
  • 网络安全中的account和audit区别
  • 变频器MODBUS RTU通信
  • Nginx 之Rewrite 使用详解
  • 若依 ruoyi-vue 隐藏字典样式
  • Excel常用操作
  • 算法之 跳跃游戏
  • Java进阶,时间与日期,包装类,正则表达式
  • 学习《人工智能的未来》这本书中的恒定表征概念:恒定表征和变化的恒定表征
  • Ubuntu20.04桥接网络和静态IP配置
  • 通过 Docker 安装和部署 KeyDB v6.3.4 的详细步骤
  • elementui: el-dialog的header设置样式不生效
  • Python PyCharm DeepSeek接入
  • 机器学习:朴素贝叶斯
  • 大数据、云计算、人工智能等技术深度融合的智慧快消开源了。
  • C++17 中的 std::reduce:详细教程
  • 菲律宾做网站/搜狗站长推送工具
  • 大网站建设/如何实施网站推广
  • 有没有给人做简历的网站/深圳优化公司排名
  • 佛山高端网站建设公司/百度竞价开户3000
  • 做视频网站需要什么软件/seo软件服务
  • 双桥网站建设/nba排名2021最新排名