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

k8s-数据卷

存储卷----数据卷

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

容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会恢复到初识状态

一旦容器回到初始状态,所有得分后天编辑的文件都会消失

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

  1. emptyDir 

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

EmptyDir卷可以是pod当中容器在这个存储卷上读取和写入

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

只能用于内部共享

演示:

进入容器:

  1. hostPath:

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

污点设置为NoExecute:节点上的pod会被驱逐,文件数据在不在?

Pod被驱逐,并不是node节点被销毁,所有的数据还保留在节点上

Pod被驱逐(基于控制器创建的),会在其他节点继续部署,又会在其他节点生成一个新的存储卷,数据依然可以持久化

EmptyDir被驱逐,数据会丢失

演示

查看不同pod输出的日志

第三种

NFS共享存储方式:

所有的pod内部的目录都和节点上的NFS共享形成数据同步,所有文件都将保存在一个目录当中,便于管理

验证

用主机名做

找不到,挂载卷因为没有映射

每个主机都做映射

HostPath和NFS是我们常用的方式,推荐使用NFS

PVC和PV(必问)

PV:全称persistent volume持久化存储卷,描述和定义一个存储卷,PV是由我们运维人员来定的

PVC:全称persistent Volume Claim 持久化存储的请求,PVC实际上是用来描述或者声明我希望使用什么样PV来进行存储

PVC---->pv------NFS 意思就是说,PVC请求PV

PVC是发起一个请求,PVC是提供一个虚拟化的存储卷

PVC和PV都是虚拟的概念,是k8s的抽象的虚拟化的存储资源

结构图:

PVC和PV之间的静态请求,一旦百个PVC怎么办,所有引申出了动态请求

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

PV和PVC之间是有生命周期管理:

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

配置:静态,动态

绑定:就是把PV分配给PVC

使用:就是pod通过PVC使用存储资源---NFS

释放:pod解除和挂载卷volume的关系,删除PVC

回收:保留PV,让下一个PVC使用

PV的状态:

Available:可用,而且没有被任何PVC绑定

Bound:绑定,PV已经绑定了PVC,绑定即使用

Released:释放,PVC已经被删除了,但是PV的存储资源还没有被集群回收

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

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

ReadOnlyMary:ROX 存储的PV可以以只读的方式被多个pod挂载

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

EmptyDir:不考虑

NFS:可以支持以上三种读写和挂载方式

ISCSI:不支持ReadWriteMany

hostPath:只支持ReadWriteOnce方式

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

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

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

集群回收PV资源的方式:

Retain保留,pod和挂载点的数据不会被删除

Recycle:回收,PV上的数据被删除,挂载点的数据也被删除

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

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

演示PVC静态和资源回收方式:

映射(全部)

发布

每个节点查看:

vim pv.yml

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv001

  labels:

    name: pv001

spec:

  nfs:

    path: /data/v1

    server: 20.0.0.74

  accessModes: ["ReadWriteMany","ReadWriteOnce"]

  capacity:

    storage: 1Gi

---

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv002

  labels:

    name: pv002

spec:

  nfs:

    path: /data/v2

    server: 20.0.0.74

  accessModes: ["ReadWriteOnce"]

  capacity:

    storage: 2Gi

---

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv003

  labels:

    name: pv003

spec:

  nfs:

    path: /data/v3

    server: 20.0.0.74

  accessModes: ["ReadWriteMany","ReadWriteOnce"]

  capacity:

    storage: 2Gi

---

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv004

  labels:

    name: pv004

spec:

  nfs:

    path: /data/v4

    server: 20.0.0.74

  accessModes: ["ReadWriteMany","ReadWriteOnce"]

  capacity:

    storage: 4Gi

---

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv005

  labels:

    name: pv005

spec:

  nfs:

   path: /data/v5

   server: 20.0.0.74

  accessModes: ["ReadWriteMany","ReadWriteOnce"]

  capacity:

    storage: 5Gi

定义一个PVC请求:

vim pvc.yml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: mypvc

spec:

  accessModes: ["ReadWriteMany"]

#pvc期望请求的PV的读写挂载类型是什么

  resources:

    requests:

      storage: 2Gi

#PVC期望请求PV的存储大小是2G。上面合起来的意思:期望读写模式:ReadWriteMany 并且大小是2G

---

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: nginx

  name: nginx

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - image: nginx:1.22

        name: nginx

        volumeMounts:

        - name: html

          mountPath: /usr/share/nginx/html

      volumes:

      - name: html

        persistentVolumeClaim:

          claimName: mypvc

选择了PV003

测试:

怎么删除PVC

删不掉,因为pod还在

怎么删呢,删除pod

处在回收状态

怎么让其回到可用状态

kubectl edit pv pv003

回到了available状态

配置回收策略

persistentVolumeReclaimPolicy: Recycle

稍微等等

也就是挂载内容被回收,也就是被删除了

persistentVolumeReclaimPolicy: Delete

先删pod,再删PVC,删除之后数据卷还在

动态卷是要删除的,这里还在,只是演示一下

怎么恢复:

总结:

k8s当中存储卷的模式:

EmptyDir:用于容器内共享,随着pod被销毁,也会被销毁,数据不保留

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

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

PV和PVC

PVC是一种请求----PV存储资源----------硬盘空间(NFS)

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

hostPath仅支持readwriteOnce方式

PVC是以检索的方式找到匹配的PV资源

检索挂载方式和读写模式:

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

谁合适选谁

保留:默认可以不写

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

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

相关文章:

k8s-数据卷

存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会恢复到初识状态 一旦容器回到初始状态,所有得分后天编辑的文件…...

Linux学习记录——사십삼 高级IO(4)--- Epoll型服务器

文章目录 1、理解Epoll和对应接口2、实现 1、理解Epoll和对应接口 poll依然需要OS去遍历所有fd。一个进程去多个特定的文件中等待,只要有一个就绪,就使用select/poll系统调用,让操作系统把所有文件遍历一遍,哪些就绪就加上哪些fd…...

6.4、SDN在云数据中心的应用案例分析

云数据中心中的虚拟子网包含网关和IP网段,IP分配给各个服务器,服务器间能够互相通信或通过网关访问外部网络。 在SDN云数据中心内,用户可以随时订购任意网段的虚拟子网,而且这些子网是可以在不同用户之间复用的,也就是说,不同用户可以使用相同的私有网段。 SDN云数据中心…...

SpringBoot整合ES

1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.6.3</version> </dependency> 2.config配置文件 Configu…...

Pandas实战100例 | 案例 10: 应用函数 - 使用 `apply`

案例 10: 应用函数 - 使用 apply 知识点讲解 Pandas 的 apply 函数是一个非常强大的工具&#xff0c;允许你对 DataFrame 中的行或列应用一个函数。这对于复杂的数据转换和计算非常有用。你可以使用 apply 来执行任意的函数&#xff0c;这些函数可以是自定义的&#xff0c;也…...

《C++大学教程》4.13汽油哩数

题目: 每位司机都关心自己车辆的行车里程数。有位司机通过记录每次出行所行驶的英里数和用油的加仑数来跟踪他多次出车的情况。请开发一个C程序&#xff0c;它使用一条while语句输入每次出车的行驶英里数和加油量。该程序应计算和显示每次出车所得到的每加仑行驶英里数&#x…...

OpenGL排坑指南—贴图纹理绑定和使用

一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式&#xff0c;主要步骤是先创建一个纹理的对象&#xff0c;和创建顶点VAO类似&#xff0c;然后就开始绑定这个纹理&#xff0c;最后在循环中使用&#xff0c;有时候可能还要用到激活纹理单元的函数。然而&#xff…...

Electron中 主进程(Main Process)与 渲染进程 (Renderer Process) 通信的方式

1. 渲染进程向主进程通信 修改 html 文件内容 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 解决控制…...

企业微信forMAC,如何左右翻动预览图片

1、control commandshifd 进入企业微信的debug调试模式 2、按照如下步骤选择 3、重启企业微信...

Android Firebase (FCM)推送接入

官方文档&#xff1a; 向后台应用发送测试消息 | Firebase Cloud Messaging 1、根级&#xff08;项目级&#xff09;Gradlegradle的dependencies中添加&#xff1a; dependencies {...// Add the dependency for the Google services Gradle pluginclasspath com.google.gm…...

Neo4j恢复

主要记录windows环境下从备份文件中恢复Neo4j&#xff0c; Linux环境同理 备份在上一篇中有介绍&#xff0c;参考: Neo4j备份-CSDN博客 误删数据 为了模拟误删除场景&#xff0c;我们查询Person&#xff0c;并模拟误操作将其进行删除&#xff1b; match(p:Person) return …...

ZZULIOJ 1114: 逆序

题目描述 输入n&#xff08;1<n<10&#xff09;和n个整数&#xff0c;逆序输出这n个整数。 输入 输入n&#xff08;1<n<10&#xff09;&#xff0c;然后输入n个整数。 输出 逆序输出这n个整数&#xff0c;每个整数占4列&#xff0c;右对齐。 样例输入 Copy …...

Linux前后端项目部署

目录 1.jdk&tomcat安装 配置并且测试jdk安装 修改tomcat 配置文件 登入tomcat 发布 安装mysql 导入sql数据 发布项目war包 redis安装 nginx安装 配置nginx域名映射 部署前端项目 centos 7的服务安装 安装jdk 安装tomcat 安装Mysql 安装redis 安装nginx 前后…...

GPT-4与DALL·E 3:跨界融合,开启绘画与文本的新纪元

在人工智能的发展浪潮中&#xff0c;MidTool&#xff08;https://www.aimidtool.com/&#xff09;的GPT-4与DALLE 3的集成代表了一个跨越式的进步。这一集成不仅仅是技术的结合&#xff0c;更是艺术与文字的完美融合&#xff0c;它为创意产业带来了革命性的变革。本文将探讨GPT…...

聊聊PowerJob的Alarmable

序 本文主要研究一下PowerJob的Alarmable Alarmable tech/powerjob/server/extension/Alarmable.java public interface Alarmable {void onFailed(Alarm alarm, List<UserInfoDO> targetUserList); }Alarmable接口定义了onFailed方法&#xff0c;其入参为alarm及tar…...

系列三十五、获取Excel中的总记录数

一、获取Excel中的总记录数 1.1、概述 使用EasyExcel开发进行文件上传时&#xff0c;通常会碰到一个问题&#xff0c;那就是Excel中的记录数太多&#xff0c;使用传统的方案进行文件上传&#xff0c;很容易就超时了&#xff0c;这时可以通过对用户上传的Excel中的数量进行限制…...

VMware workstation安装debian-12.1.0虚拟机并配置网络

VMware workstation安装debian-12.1.0虚拟机并配置网络 Debian 是一个完全自由的操作系统&#xff01;Debian 有一个由普罗大众组成的社区&#xff01;该文档适用于在VMware workstation平台安装debian-12.1.0虚拟机。 1.安装准备 1.1安装平台 Windows 11 1.2软件信息 软…...

centos下系统全局检测工具dstat使用

目录 一&#xff1a;没有需要安装 二&#xff1a;dstat命令参数 三、监测界面各参数含义&#xff08;部分&#xff09; 四、dstat的高级用法 一&#xff1a;没有需要安装 yum install dstat 二&#xff1a;dstat命令参数 有默认选项&#xff0c;执行dstat命令不加任何参数…...

无人机群ros通信

单架无人机与地面站通信 在一个局域网内获取无人机的机载电脑ip 通过地面站ssh到机载电脑&#xff0c;实现通信 多架无人机与地面站通信 在ROS基础上&#xff0c;配置主机和从机&#xff0c;实现主机和从机的话题联通 配置hosts 在主机和从机的/etc/hosts文件中&#xff0c…...

LeetCode刷题:142. 环形链表 II

题目&#xff1a; 是否独立解决&#xff1a;否&#xff0c;参考了解题思路解决问题&#xff0c;思考了用快慢指针&#xff0c;栈&#xff0c;统计链表数量定位尾巴节点&#xff08;因为是环形链表所以是死循环&#xff0c;链表数量用while循环统计不出来&#xff09;都没解决 解…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...