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模式,不可用,数据也会被删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336713.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

螺旋数字矩阵 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m (0 < n <= 999,0 < m <= 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3……

sqrt(1./x)和sqrt(1.0/x)得到的结果不同 matlab

原因&#xff08;from chatgpt&#xff09;&#xff1a; MATLAB中的两个表达式 sqrt(1.0/lamda) 和 sqrt(1./lamda) 的区别在于它们如何处理数组和数据类型。 sqrt(1.0/lamda)&#xff1a; 这里的 1.0 被视为一个标量的双精度浮点数。当执行 1.0/lamda 时&#xff0c;MATLAB…

java解析json复杂数据的两种思路

文章目录 一、原始需求二、简单分析三、具体实现一1. api接口2. 接口返回3. json 数据解析1.&#xff09;引入Jackson库2.&#xff09;定义实体3.&#xff09;解析json字符串4.&#xff09;运行结果 4. 过程分析 四、具体实现二1. 核心代码2.运行结果 五、方案比较六、源码传送…

【C语言】time.h——主要函数介绍(附有几个小项目)

time.h是C标准函数库中获取时间与日期、对时间与日期数据操作及格式化的头文件。返回值类型 size_t&#xff1a;适合保存sizeof的结果&#xff0c;类型为unsigned int&#xff08;%u&#xff09;clock_t&#xff1a;适合存储处理器时间的类型&#xff0c;一般为unsigned long&…

将dumpbin从Visual Studio中抠出来,并使用dumpbin查看exe和dll库的依赖关系

目录 1、初步说明 2、在开发的机器上使用dumpbin工具查看dll库的依赖关系 3、将dumpbin.exe从Visual Studio中抠出来 3.1、找到dumpbin.exe文件及其依赖的dll文件 3.2、在cmd中运行dumpbin&#xff0c;提示找不到link.exe文件 3.3、再次运行dumpbin.exe提示找不到mspdb10…

Python教程38:使用turtle画动态粒子爱心+文字爱心

Turtle库是Python语言中的一个标准库&#xff0c;它提供了一种有趣的方式来介绍编程和图形绘制的基本概念。Turtle库使用一个虚拟的“海龟”来绘制图形。你可以控制海龟的方向、速度和位置&#xff0c;通过向前移动、向左转或向右转等命令来绘制线条、圆弧多边形等图形。 -----…

LeetCode 36 有效的数独

题目描述 有效的数独 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考…

0-1背包问题-例题

题目摘自《卡码网》46题 题意理解 m种材料——对应m物品 大小问n的行李箱——对应大小为n的背包 所以该问题是一个0-1背包问题&#xff0c;采用动态规划的一般思路来解题。 解题思路&#xff1a; 动规五部曲&#xff1a; &#xff08;1&#xff09;定义二维dp数组&#xff0c;明…

2024 Midjourney 基础教程(⼆):了解 Midjourney Bot 和AI绘画使用技巧进阶教学

在上⼀篇⽂章中&#xff0c;我们学到了如何注册 Midjourney &#xff0c;开通付费订阅&#xff0c;并画出了可能是⾃⼰的第⼀张 AI绘画。怎么样&#xff1f;这种将想象的画⾯&#xff0c;变为现实世界图⽚的感觉。 是否有种造物者的错觉&#xff0c;同时有种开盲盒的惊喜感&…

行为型设计模式——模板方法模式

学习难度&#xff1a;⭐ &#xff0c;比较常用 模板方法模式 在面向对象程序设计过程中&#xff0c;程序员常常会遇到这种情况&#xff1a;设计一个系统时知道了算法所需的关键步骤&#xff0c;而且确定了这些步骤的执行顺序&#xff0c;但某些步骤的具体实现还未知&#xff0…

Linux系统——测试端口连通性方法

目录 一、TCP端口连通性测试 1、ssh 2、telnet&#xff08;可能需要安装&#xff09; 3、curl 4、tcping&#xff08;需要安装&#xff09; 5、nc&#xff08;需要安装&#xff09; 6、nmap&#xff08;需要安装&#xff09; 二、UDP端口连通性测试 1、nc&#xff08;…

Mysql判断一个表中的数据是否在另一个表存在

方式一&#xff1a; 判断A表中有多少条数据在B表中【存在】,并且显示这些数据–EXISTS语句 select A.ID, A.NAME from 表A where EXISTS(select * from 表B where A.IDB.ID) 判断A表中有多少条数据在B表中【不存在】&#xff0c;并且显示这些数据–NOT EXISTS语句 select …