存储卷(数据卷)—主要是nfs方式挂载
1、定义
容器内的目录和宿主机的目录进行挂载
容器在系统上的生命周期是短暂的,一旦容器被删除,数据会丢失。k8s基于控制器创建的pod,delete相当于重启,容器的状态会恢复到原始状态。一旦回到原始状态,后天编辑的文件都会消失,所以容器和节点之间要创建一个持久化保存容器内文件的存储卷,即使容器被销毁、删除、重启,节点上的存储卷依然存在,后续可以继续将容器内的目录和宿主机挂载,保存的数据可以继续使用
2、存储方式
(1)emptyDir:容器内部共享存储卷,在k8s系统中是一个pod中的多个容器共享一个存储卷目录。emptyDir可以使pod中的容器在这个存储卷上读取和写入,但不能挂载到节点上,随着pod的生命周期结束,emptyDir也会被销毁,导致数据丢失



一个pod里两个容器。加上-c 容器名进入一个pod里的不同容器

(2)hostPath:将容器内的目录和节点上的目录进行挂载,hostPath可以实现数据持久化。若node节点被销毁,数据也会丢失(常用)
注意:这种挂载方式非常直接,但有一个重要的限制:hostPath 是特定于节点的,而不是集群范围的
污点设置为NoExecute会把节点上的pod驱逐,文件数据在不在?【面试题】
emptyDir的共享数据会丢失
hostPath的共享数据不会丢失。pod被驱逐,不是node节点被销毁,之前的数据还保留在原来的节点上;基于控制器创建的pod被驱逐会在其他节点重新部署,所以会在其他节点生成一个新的存储卷,数据依然可以持久化
nfs的共享数据不会丢失



| 容器 | 容器内的目录 | 挂载点 |
| 容器1 | /usr/share/nginx/html | 节点上的/opt/test |
| 容器2 | /data | 节点上的/opt/test |
| 因为两个容器内的目录均和节点上的/opt/test进行挂载,所以这个两个容器之间的目录也能数据同步,形成容器1的/usr/share/nginx/html、容器2的/data、节点上的/opt/test三者数据同步 | ||


注意:这种挂载方式非常直接,但有一个重要的限制:hostPath 是特定于节点的,而不是集群范围的





hostPath 是特定于节点的,而不是集群范围的


查看一个pod里多个容器的日志。-c 容器名

(3)NFS共享存储:数据集中在同一个节点上管理(常用。推荐)
所有pod内的目录都和节点上的NFS共享目录形成数据卷,所有数据文件都保存在共享目录中,集中、方便管理


指定共享目录/data/volumes

发布共享目录

在其他节点查看共享目录



方式1:指定IP地址





测试

查看容器中是否同步数据

结论:每个pod中数据同步

结论:每个pod中的所有容器数据同步
方式2:指定主机名




所有主机做主机名映射
![]()




测试
在共享目录中创建文件

查看pod是否同步数据

结论:容器和节点上的挂载目录数据同步
| k8s持久化存储数据方式的特点 | ||
| 方式 | 挂载点 | 特点 |
| emptyDir | 容器与容器进行挂载 | 一旦pod被销毁,数据丢失 |
| hostPath | 容器与节点进行挂载 | 持久化存储数据,pod销毁数据仍存在,但数据分散存储在各个节点上,不方便管理 |
| nfs | 容器与节点进行挂载 | pod销毁数据仍然存在,并且数据集中在一个节点上,方便管理 |
3、PV和PVC【面试必问】
(1)pvc定义
全称Persistent Volume Claim持久化存储的请求,描述或声明希望使用什么样的pv来进行存储。pvc是虚拟化的请求存储资源或检索存储资源,选择一个最合适的pv来存储资源
(2)pv定义
全称Persistent Volume持久化存储卷,描述和定义一个存储卷,pv由运维人员来定的。pv是集群中虚拟化的存储资源
pv和pvc是一一映射的关系(描述、存储大小)
pvc向pv请求,存储在NFS服务器上
pv和pvc都是虚拟化的概念,是k8s的抽象的虚拟的存储资源

pv3和pv4都满足要求,但优先选择pv3,若pv3被占用,则选择pv4
(3)pv和pvc之间有生命周期管理
配置provisioning→pvc请求request→检索(找一个合适的pv)→pvc和pv绑定bending→使用use→pod被删除,pv的资源被释放releasing→回收recycling
配置分为静态请求和动态请求
绑定:把pv分配给pvc
使用:pod通过pvc使用存储资源
释放:pod解除和挂载卷之间的关系,删除pvc
回收:保留pv以供下一个pvc使用
(4)pv和pvc的映射方式
①静态请求
②动态请求
(5)pv的状态
| Available | 可用,且没有被任何pvc绑定 |
| Bound | 绑定,pv已经绑定pvc,绑定即使用 |
| released | 释放,pvc已被删除,但集群尚未回收pv的存储资源 |
| Failed | pv资源回收失败,且pv处于不可用状态 |
(6)pv支持的读写方式
| ReadWriteOnce | RWO,存储pv可读可写,但只能被单个pod挂载 pv可读可写,只能挂载单个pod |
| ReadOnlyMany | ROX,存储pv可以以只读的方式被多个pod挂载 pv只读,能挂载多个pod |
| ReadWriteMany | RWX,存储pv可以以读写的方式被多个pod挂载 pv可读可写,能挂载多个pod |
| NFS支持以上三种读写和挂载方式,hostPath只支持ReadWriteOnce方式(在配置文件中都是全称) | |
| ISCSI设备不支持ReadWriteMany方式(注意环境检查)
-m session指定操作的会话模块,管理iscsi的会话 -P 3显示详细信息的级别(3表示显示详细信息) | |
(7)集群回收pv资源的方式
| Retain | 保留。pod和挂载点的数据不会被删除(默认策略。常用) 回收资源后,pv处于released状态,需人工调整成Available状态 |
| Recycle | 回收。pv上的数据会被删除,挂载点的数据也被删除 回收资源后,pv自动调整成Available状态 |
| Delete | 删除。解绑时自动删除pv上的数据(本地硬盘不能使用,只有云平台支持动态卷的可以使用),pv不再可用,云平台自己处理 |
当pod运行之后通过pvc请求到了pv,除非pod被销毁,否则无法删除pvc(先删除pod才能删除pvc)
运维负责pv,创建好持久化存储卷,声明好读写和挂载类型,以及可以提供的存储空间。开发负责pvc,与开发对接好条件:期望的读写和挂载类型以及存储空间
创建静态pv实验(默认策略是Retain)
1、发布共享目录



在其他节点上查看共享目录



(一)保留策略Retain(pod销毁,存储卷上的数据不会被删除)
2、创建多个pv
定义pv能支持的读写方式和能接收pvc请求的存储大小




此时各个pv支持的读写方式、存储大小以及与节点的挂载目录:
| PV | 支持的读写方式 | 存储大小 | 节点上的挂载目录 |
| PV001 | ReadWriteMany ReadWriteOnce | 1G | /data/v1 |
| PV002 | ReadWriteOnce | 2G | /data/v2 |
| PV003 | ReadWriteMany ReadWriteOnce | 2G | /data/v3 |
| PV004 | ReadWriteMany ReadWriteOnce | 4G | /data/v4 |
| PV005 | ReadWriteMany ReadWriteOnce ReadOnlyMany | 5G | /data/v5 |
| 客户端发送PVC请求到PV上请求存储资源,PV通过nfs方式挂载到节点上的目录,实际上数据还是存储在节点上 | |||


3、定义pvc
向pv发起请求
![]()




4、测试




pvc请求具体用哪个pv的存储,pv和物理存储做挂载,最终由物理设备提供持久化存储
5、删除pvc(运行中的pod无法删除pvc)
• 先删除pod

• 再删除pvc



6、pv恢复可用状态
![]()


![]()

(二)回收策略Recycle
2、定义pv
![]()







3、定义pvc
向pv发起请求
![]()




4、测试
在共享目录中创建文件
![]()
查看容器是否同步数据


结论:数据同步
5、删除pvc


稍等一会自动变成可用状态


(三)删除策略delete
2、定义pv






3、定义pvc
向pv发起请求
![]()




4、测试
在共享目录中创建文件

查看容器中是否数据同步


结论:数据同步成功
5、删除pvc


Failed表示资源回收失败,并且pv处于不可用状态
注:delete只支持动态卷删除
6、恢复pv

![]()



相关文章:
存储卷(数据卷)—主要是nfs方式挂载
1、定义 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,一旦容器被删除,数据会丢失。k8s基于控制器创建的pod,delete相当于重启,容器的状态会恢复到原始状态。一旦回到原始状态,后天编辑的文件…...
城市酷选模式开发(门店免单排队返利系统)
城市酷选模式开发(门店免单排队返利系统)【阿巴】城市酷选商城开发免单排队返利小程序搭建、城市酷选模式开发、城市酷选系统商城开发、城市酷选APP系统开发、城市酷选 每经AI快讯,有投资者在投资者互动平台提问:“以塑代钢”已成…...
JNPF低代码引擎到底是什么?
最近听说一款可以免费部署本地进行试用的低代码引擎,源码上支持100%源码,提供的功能和技术支持比较完善。借助这篇篇幅我们了解下JNPF到底是什么? JNPF开发平台是一款PaaS服务为核心的零代码开发平台,平台提供了多租户账号管理、主…...
#基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
我们在使用jupyter 写代码后,经常遇到一些写完想把文件转成markdown格式的场景,这里就教你怎么处理相关的问题 使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件 pip install nbconvert pip install pandoc jupyter nbconvert --to markdown 文…...
工信部颁发的人工智能证书《自然语言与语音处理设计开发工程师》证书到手啦!
工信部颁发的人工智能证书《自然语言与语音处理设计开发工程师》证书拿到手啦! 近期正在报考的工信部颁发的人工智能证书还有: 《计算机视觉处理设计开发工程师》中级 2024年1月24日至28日-北京 《自然语言与语音处理设计开发工程师》中级 第二期 20…...
canvasdrawer 微信原生小程序生成海报图片
在小程序中生成海报是一种非常有效的推广方式 用户可以使用小程序的过程中生成小程序海报并分享给他人 通过海报的形式,用户可以直观地了解产品或服务的特点和优势 常见绘制海报方式 目前,小程序海报有两种常见的实现方式: canvas 绘制…...
linux基础学习(3):挂载
挂载可以理解为给磁盘空间一个可访问的入口,那个入口称为挂载点,相当于windows中的盘符。 1.挂载命令mount 1.1直接输入mount 查看系统已挂载的设备 1.2挂载与卸载命令 mount -t 文件系统名 设备文件名 挂载点 | umount 挂载点 或 umount 设…...
[每周一更]-(第82期):认识自然处理语言(NLP)
GPT的大火,带起了行业内大模型的爆发;国内外都开始拥有或者研发自己的大模型,下边我们从NLP来进一步深入了解大模型、AI。 一、什么是NLP? 自然语言处理(英语:Natural Language Processing,缩…...
Win11如何设置时间显示秒
1、打开注册表 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced 2、进入以上路径 Advanced新建dword32位,新建一个文件,设置一个名称 3、修改之前创建的文件 4、重启电脑...
世界人口数据分析与探索
文章目录 世界人口数据集介绍数据集 1:世界国家统计数据:数据集 2:世界人口详细信息(2023 年):数据集 3:按年份划分的世界人口(1950-2023): 数据分析导入必要…...
自动驾驶的未来:BEV与Occupancy网络全景解析与实战揭秘!
自动驾驶领域中,什么是BEV?什么是Occupancy? 作者:小柠檬 | 来源:公众号「3DCV」 BEV是Bird’s Eye View 的缩写,意为鸟瞰视图。在自动驾驶领域,BEV 是指从车辆上方俯瞰的场景视图。BEV 图像可以…...
大众点评评论采集软件使用教程
导出字段: 店铺ID 评论ID 发布时间 人均消费 评分 详情链接 点赞数 浏览数 评论数 最后更新时间 发布平台 推荐 评论详情 原始评论 图片数 图片链接 用户等级 用户名称 用户头像 VIP 私...
2024年前端面试中JavaScript的30个高频面试题之中级知识
基础知识 高级知识 13. 什么是闭包?闭包的用例有哪些? 闭包是一个功能,它允许函数捕获定义该函数的环境(或保留对作用域中变量的访问)即使在该作用域已经关闭后。 我们可以说闭包是函数和词法环境的组合,其中定义了该函数。 换句话说,闭包为函数提供了访问自己的作用域、…...
postman 简单测试(一)
1.postman官网 Postman API Platform 2.研究了一下postman 一些简单的功能,自己做个记录,同时希望能节约点测试时间。 2.1新建一个 collections 长期测的话,最好注册一个账号,开放更多功能。 2.2新建一个请求 后端要先搭建起来…...
12.1、2、3-同步状态机的结构以及Mealy和Moore状态机的区别
同步状态机的结构以及Mealy和Moore状态机的区别 1,介绍Mealy型状态机和Moore型状态机的两种结构2,设计高速电路的方法 由于寄存器传输级(RTL)描述的是以时序逻辑抽象所得到的有限状态机为依据,因此,把一个时…...
前端框架前置课Node.js学习(1) fs,path,模块化,CommonJS标准,ECMAScript标准,包
目录 什么是Node.js 定义 作用: 什么是前端工程化 Node.js为何能执行Js fs模块-读写文件 模块 语法: 1.加载fs模块对象 2.写入文件内容 3.读取文件内容 Path模块-路径处理 为什么要使用path模块 语法 URL中的端口号 http模块-创建Web服务 需求 步骤: 案例:浏…...
SpringBoot源码启动流程(待完善)
SpringBoot源码启动流程 1. 构造SpringApplication对象 1.1 推测web应用类型 判断关键类是否存在来区分类型 REACTIVENONESERVLET static WebApplicationType deduceFromClasspath() {if (ClassUtils.isPresent(WEBFLUX_INDICATOR_CLASS, null) && !ClassUtils.isP…...
存内计算技术打破常规算力局限性
目录 前言 关于存内计算 1、常规算力局限性 2、存内计算诞生记 3、存内计算核心 存内计算芯片研发历程及商业化 1、存内计算芯片研发历程 2、存内计算先驱出道 3、存内计算商业化落地 基于知存科技存内计算开发板ZT1的降噪验证 (一)任务目标以…...
uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子明细实现
锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…...
RabbitMQ入门到实战——高级篇
消息的可靠性 生产者的可靠性(确保消息一定到达MQ) 生产者重连 这⾥除了enabled是false外,其他 initial-interval 等默认都是⼀样的值。 生产者确认 生产者确认代码实现 application中增加配置:(publisher-returns…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

iscsiadm -m session -P 3 #查看服务器是否有iscsi设备