K8S的存储卷---数据卷

容器内的目录和宿主机的目录进行挂载

容器在系统上的生命周期是短暂的。delete,K8S用控制器创建的pod,delete相当于重启,容器的状态也会恢复到初始状态。一旦回到初始状态,所有的后天编辑的文件都会消失

容器和节点之间创建一个可以持久化保存容器内文件的存储卷。即使容器被销毁、删除、重启,节点上的存储卷的数据依然存在,后续也可以继续使用。可以继续将容器内目录和宿主机挂载,保存的数据继续使用

1、emptyDir

容器内部共享存储卷,K8S系统中,是一个pod当中的多个容器共享一个存储卷目录

emptyDir卷可以使pod当中的容器在这个存储卷上读取和写入

emptyDir不能挂载到节点。随着pod生命周期的结束,emptyDir卷也会结束,数据也不会保留

容器内部共享。lnmp

2、hostPath

将容器内的挂载点和节点上的目录进行挂载,hostPath可以实现数据的持久。node节点被销毁,那么数据也会丢失

Q:污点设置为NoExcute时,节点上的pod会被驱逐,那么文件数据是否还在?

A:在。①只是pod被驱逐,并不是node节点被销毁。所以数据还是保留在节点上; ②pod被驱逐之后,基于控制器创建的,会在其他重新部署,又会在其他节点生成一个新的存储卷,数据依然可以持久化。emptyDir的共享数据会丢失,hostPath不会

3、NFS共享存储

所有pod内的目录都和节点上的NFS共享目录形成数据卷,所有的数据文件都保存在共享目录中.集中方便管理

PV和PVC(面试必问:组件、功能、网络、资源调度、扩缩容、pvc/pv)

pv(Presistent Volume):持久化存储卷。描述和定义一个存储卷,pv由运维人员来定

pvc(Presistent Volume Claim):持久化存储的请求。pvc实际上是用来描述或者申明我希望使用什么样的pv来进行存储

pvc和pv是一一对应的关系(描述(期望类型)、存储(大小))

pvc ---> pv ---> NFS

pv和pvc都是虚拟化的概念,是K8S的抽象的虚拟的存储资源

pvc和pv之间的静态请求。(一旦形成百个pvc怎么办?所以还有动态pvc)

pv是集群当中的存储资源,pvc请求存储资源,也是对存储资源的一个检索(检查索引),选择一个最合适的pv来存储资源

pv和pvc之间有生命周期管理:

1、Provisioning(配置) ---> pvc请求request ---> 检索(找一个合适的pvc) ---> pvc和pv(binding绑定) ---> 使用 ---> pod被删除 ---> pv的releasing(释放) ---> recycling(回收)

配置:静态、动态

绑定:就是把pv分配给pvc

使用:就是pod通过pvc使用存储资源

释放:pod解除和volume之间的关系,删除pvc

回收:可以保留pv,以供下一个pvc使用

pv状态:

Availble:可用,而且没有被任何pvc绑定(等待绑定)

Bound:绑定。pv已经绑定了pvc,绑定即使用

released:释放。pvc已经被删除了,但是pv的存储资源尚未被集群回收

Failed:pv资源回收失败,而且pv为不可用状态

ReadWriteOnce(RWO):在配置文件里是全称,存储pv可读可写,但是只能被单个pod挂载

ReadOnlyMany(ROX):存储的pv可以以只读的方式被多个pod挂载

ReadWriteMany(RWX):存储可以支持读写的方式被多个pod共享

NFS:可以支持RWO、ROX、RWX三种读写和挂载方式

SCSI:

ISCSI:不支持RWX

hostPath:只支持RWO

lsscsi 查看全部的挂载设备

root@master01 opt# lsscsi

1:0:0:0 cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0

2:0:0:0 disk VMware, VMware Virtual S 1.0 /dev/sda

root@master01 opt#iscsiadm -m session -P 3

iscsiadm: No active sessions.

iscsiadm -m session -P 3

iscsiadm:查看服务器是否有iscsi设备

-m session:指定操作的模块,管理iSCSI的会话

-P 3:显示详细信息的级别。级别就是3,显示详细信息

集群回收pv资源的方式:

1、Retain(默认策略):保留。pod和挂载点的数据不会被删除

2、Recycle:回收。pv上的数据被删除,挂载点的数据也被删除

3、Delete:删除。解绑时自动删除pv上的数据,(本地硬盘不能使用,AWS, EBS GCE)支持动态卷的可以使用,pv不再可用(云平台自己处理)

补充:当pod运行之后,通过pvc请求到pv,除非pod被销毁,否则无法删除pvc

K8S当中存储卷的模式:

emptyDir:容器内存储卷,随着pod被销毁,也会被销毁,数据不保留

hostPath:节点目录的存储卷,可以实现持久化存储。数据在每个几点上都有,不方便集中管理

NFS:共享目录存储卷,可以实现持久化,数据集中在一个目录,方便管理

pv和pvc

pvc是一种请求,请求pv的存储资源--------硬盘空间(NFS方式)

NFS支持pvc的所有挂载方式和读写模式

hostPath仅支持RWO

pvc是以检索的方式找到匹配的pv资源

检索挂载方式和读写方式

检索pv能提供的存储资源的大小

谁合适选谁

保留:默认可以不屑

回收:自动回收。节点上的数据会被删除

删除:pv会变成failed模式,不可用,数据也会被删除

相关推荐
liux352824 分钟前
K8s存储卷全解析:PV/PVC/StorageClass 关系
kubernetes
江华森3 小时前
从零搭建 Kubernetes 集群并部署 Kuboard v3 管理面板 —— 国内环境完整实战教程
容器·kubernetes
友莘居士4 小时前
KingbaseES Docker速查表
运维·docker·容器
小肥君5 小时前
docker镜像配置
运维·docker·容器
某林2127 小时前
Isaac Lab (v2.3.2) Docker 本地化部署与底层排障全解析
运维·docker·容器·架构·iassc
iDao技术魔方9 小时前
WSL 配 GPU 用 Docker 的折腾指南(2026 年版)
运维·docker·容器
步步为营DotNet10 小时前
.NET 11 中 Native AOT 在云原生场景下的深度剖析与实践
云原生·.net
跳动的世界线10 小时前
WSL 2 + Docker 本地全栈开发环境配置指南
运维·docker·容器
xiaogg367810 小时前
Rancher2.0搭建kubernetes(K8S)集群
云原生·容器·kubernetes