k8s的存储卷之静态

存储卷----数据卷

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

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

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

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

存储的方式

1、emptyDir 容器内部共享存储卷,k8s系统中,是一个pod当中的多个容器共享一个存储卷目录,emptyDir卷可以是pod当中容器在这个存储卷上读取和写入

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

,容器内部共享。lnmp

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-xblabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginx:1.22name: xbvolumeMounts:- name: htmlmountPath: /usr/share/nginx/html
#第一个name,存储的名称,可以自定义,mountPath,定义容器内的挂载目录点,和节点或者其他容器的共享目录- image: nginx:1.22name: xb1volumeMounts:- name: htmlmountPath: /data/
#引用上一个挂载的名称,表示我将和usr/share/nginx/html这个目录挂载,由data目录和它的目录挂载command: ['/bin/sh','-c','while true;do echo $(date) >> /data/index.html;sleep 2;done']volumes:- name: htmlemptyDir: {}

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

apiVersion: apps/v1
kind: Deployment
metadata:name: nginxlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: htmlmountPath: /usr/share/nginx/html- name: nginx1image: nginx:1.22volumeMounts:- name: htmlmountPath: /datacommand: ["/bin/bash","-c","while ture; do echo $(date) >> /data/index.html; sleep 2; done"]volumes:- name: htmlhostPath:path: /opt/testtype: DirectoryOrCreate

3、NFS共享存储

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

在私有仓库上
vim /etc/exports
/data/volumes 20.0.0.0/24(rw,no_root_squash)在主节点上
apiVersion: apps/v1
kind: Deployment
metadata:name: nginxlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: htmlmountPath: /usr/share/nginx/html
#第一个name,存储的名称,可以自定义,mountPath,定义容器内的挂载目录点,和节点或者其他容器的共享目录- image: nginx:1.22name: nginx1volumeMounts:- name: htmlmountPath: /data
#引用上一个挂载的名称,表示我将和usr/share/nginx/html这个目录挂载,由data目录和它的目录挂载command: ["/bin/bash","-c","while ture; do echo $(date) >> /data/index.html; sleep 2; done"]volumes:- name: htmlnfs:path: /data/volumesserver: 20.0.0.73

pvs和PV

pv:全称Persistent Volume 持久化存储卷,用来描述和定义一个存储卷,pv是由运维人员来定的

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

pvc-pv是一一对应的关系(描述,存储(大小))

pvc--->pv---?

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

pod内的挂载点声明一个请求pvc请求,pvc会找一个最合适的pv来作为pod的存储卷,pv和共享目录在一一映射,最终由nfs来提供最终的共享存储空间

pvc和pv的请求方式

静态请求

动态请求

pvc和pv之间静态请求,一旦成百个怎么办,所有还有动态pvc

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

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

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

配置:动态 静态

绑定:就是把pv分配给pvc

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

释放:pod解除和Volume的关系,删除pvc

回收:保留pv,让下一个pvc使用

pv的状态

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

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

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

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

pv的读写方式

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

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

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

nfs:可以支持三种读写和挂载方式
ISCSI 不支持
hostPath:支持ReadWriteOnce方式

查看设备上所有的Iscsi

[root@master01 opt]# lsscsi 
[1:0:0:0]    cd/dvd  NECVMWar VMware SATA CD01 1.00  /dev/sr0 
[30:0:0:0]   disk    VMware,  VMware Virtual S 1.0   /dev/sda 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

静态
mkdir v{1,2,3,4,5}
vim/etc/perports
/data/v1 20.0.0.0/24(rw,no_root_squash)
/data/v2 20.0.0.0/24(rw,no_root_squash)
/data/v3 20.0.0.0/24(rw,no_root_squash)
/data/v4 20.0.0.0/24(rw,no_root_squash)
/data/v5 20.0.0.0/24(rw,no_root_squash)systemctl restart rpcbind
systemctl restart nfs
exportfs -arv节点上查看
showmount -e 20.0.0.73
Export list for 20.0.0.73:
/data/v5      20.0.0.0/24
/data/v4      20.0.0.0/24
/data/v3      20.0.0.0/24
/data/v2      20.0.0.0/24
/data/v1      20.0.0.0/24
/data/volumes 20.0.0.0/24主节点
vim pv.yamlapiVersion: v1
kind: PersistentVolume
metadata:name: pv001labels:name: pv001
spec:nfs:path: /data/v1server: 20.0.0.73accessModes: ["ReadWriteMany","ReadWriteOnce"]capacity:storage: 1Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv002labels:name: pv002
spec:nfs:path: /data/v2server: 20.0.0.73accessModes: ["ReadWriteOnce"]capacity:storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv003labels:name: pv003
spec:nfs:path: /data/v3server: 20.0.0.73accessModes: ["ReadWriteMany","ReadWriteOnce"]capacity:storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv004labels:name: pv004
spec:nfs:path: /data/v4server: 20.0.0.73accessModes: ["ReadWriteMany","ReadWriteOnce"]capacity:storage: 4Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv005labels:name: pv005
spec:nfs:path: /data/v5server: 20.0.0.73accessModes: ["ReadWriteMany","ReadWriteOnce","ReadOnlyMany"]capacity:storage: 5Gi查看生成的pv
[root@master01 opt]# kubectl get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pv001   1Gi        RWO,RWX        Retain           Available                                   7s
pv002   2Gi        RWO            Retain           Available                                   7s
pv003   2Gi        RWO,RWX        Retain           Available                                   7s
pv004   4Gi        RWO,RWX        Retain           Available                                   7s
pv005   5Gi        RWO,ROX,RWX    Retain           Available                                   7svim pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mypvc
spec:accessModes: ["ReadWriteMany"]
#pvc期望请求的pv的读写挂载类型是什么resources:requests:storage: 2Gi
#pvc 期望请求pv的存储大小是2G,期望的pv类型:ReadWritemany 大小是2G
---
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-xblabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginx:1.22name: xbvolumeMounts:- name: htmlmountPath: /usr/share/nginx/htmlvolumes:- name: htmlpersistentVolumeClaim:claimName: mypvc查看
[root@master01 opt]# kubectl get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM           STORAGECLASS   REASON   AGE
pv001   1Gi        RWO,RWX        Retain           Available                                           144m
pv002   2Gi        RWO            Retain           Available                                           144m
pv003   2Gi        RWO,RWX        Retain           Bound       default/mypvc                           144m
pv004   4Gi        RWO,RWX        Retain           Available                                           144m
pv005   5Gi        RWO,ROX,RWX    Retain           Available                                           144mpvc --- 请求用哪个pv的存储-----pv和物理存储做映射(挂载)----删除pvc
[root@master01 opt]# kubectl delete pvc mypvc(会卡)
[root@master01 /]# kubectl delete deployments.apps nginx-xb 
进入kubectl edit pv pv003,删除 claimRef模块修改pv的资源方式
pv.yaml
......accessModes: ["ReadWriteMany","ReadWriteOnce"]persistentVolumeReclaimPolicy: Recyclecapacity:storage: 4Gi
.....查看
[root@master01 opt]# kubectl get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pv001   1Gi        RWO,RWX        Retain           Available                                   151m
pv002   2Gi        RWO            Retain           Available                                   151m
pv003   2Gi        RWO,RWX        Retain           Available                                   151m
pv004   4Gi        RWO,RWX        Recycle          Available                                   151m
pv005   5Gi        RWO,ROX,RWX    Retain           Available                                   151m

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

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

相关文章

Python自动化测试框架:Unittest 断言详解

断言是编程中常用的一种验证方法,也是测试代码中最重要的部分,用于验证某个条件是否为真,验证测试结果与预期结果是否一致。 unittest 提供了方便的断言方法,用于验证测试结果是否符合预期,若验证失败,则会…

leetcode 动态规划(最后一块石头的重量II、目标和、一和零)

1049.最后一块石头的重量II 力扣题目链接(opens new window) 题目难度&#xff1a;中等 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < …

用友移动管理系统 upload任意文件上传漏洞

产品介绍 用友移动系统管理系统是用友公司推出的一款移动办公解决方案&#xff0c;旨在帮助企业实现移动办公、提高管理效率和员工工作灵活性。 漏洞描述 用友移动系统管理系统/mobsm/common/upload等接口存在任意文件上传漏洞&#xff0c;未经授权攻击者通过漏洞上传任意文…

Flutter组件GridView使用介绍

介绍 GridView 是 Flutter 中用于创建网格布局的滚动小部件。它可以创建多列布局&#xff0c;并且每个网格单元可以包含一个小部件。 GridView 提供了几种构造函数来创建不同类型的网格布局&#xff1a; GridView&#xff1a;最通用的构造函数&#xff0c;完全自定义网格布局…

怎么在unity3D工程中导入Newtonsoft.Json

打开 Unity 编辑器。 转到菜单栏的 “Window”&#xff08;窗口&#xff09;选项&#xff0c;然后选择 “Package Manager”&#xff08;包管理器&#xff09; 在搜索框中输入 “Newtonsoft Json” 进行搜索。 注意&#xff1a;要选择Unity Registry 在搜索结果中&#xf…

GC6109——双通道5V低电压步进电机驱动芯片,低噪声、低振动,应用摄像机,机器人等产品中

GC6109是双通道5V低电压步进电机驱动器&#xff0c;具有低噪声、低振动的特点&#xff0c;特别适用于相机的变焦和对焦系统&#xff0c;万向节和其他精密、低噪声的STM控制系统。该芯片为每个通道集成了256微步驱动器。带SPl接口&#xff0c;用户可以方便地调整驱动器的参数。内…

SpringCloudAlibaba微服务架构实战派上下册技术交流!

另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…

Nginx介绍与安装

目录 nginx服务 1、Nginx 介绍 2、为什么选择 nginx 3、IO多路复用 1、I/O multiplexing【多并发】 2、一个请求到来了&#xff0c;nginx使用epoll接收请求的过程是怎样的? 3、异步&#xff0c;非阻塞 4、nginx 的内部技术架构 5、yum安装部署nginx和配置管理 1.获取…

PHP企业物资管理系统源码带文字安装教程

PHP企业物资管理系统源码带文字安装教程 技术架构 主要框架 : PHP7.0 laravel5.4  mysql5.5.36 composer1.3.2(依赖管理) 前端 : jquery bootstrap jstree&#xff08;树形结构&#xff09; echart&#xff08;图表&#xff09; layer&#xff08;弹出层&#xff09; 企…

JavaScript递归技巧的前世今生:深入解析递归及其与堆栈的关系

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 递归作为一种能够用简洁的方式定义复杂对象的编程技巧,在计算机科学中被广泛应用。它借助系…

OpenHarmony南向之LCD显示屏

OpenHarmony南向之LCD显示屏 概述 LCD&#xff08;Liquid Crystal Display&#xff09;驱动&#xff0c;通过对显示器上下电、初始化显示器驱动IC&#xff08;Integrated Circuit&#xff09;内部寄存器等操作&#xff0c;使其可以正常工作。 HDF Display驱动模型 LCD器件驱…

示例说明 Makefile 中的 $(@F),及其用法示例$$dir $@ $< $^ %.c

备忘一个不错的开源编辑器CudaText 下载网址&#xff1a; CudaText - Browse /release at SourceForge.net CudaText 主页&#xff1a; CudaText - Home 1&#xff0c;含义及验证 在 Makefile 中&#xff0c;$(F) 表示当前规则的目标文件名&#xff08;不包括路径部分&…

都2024年了,FP卖家还不知道AB站怎么玩?

自从开始写FP独立站各种运营技巧和黑科技的文章&#xff0c;经常都会有朋友来私V&#xff0c;询问怎么进行AB站跳转。 可能是现在平台对于FP商家的限制越来越多&#xff0c;再加上如今到处都是“内卷”的电商环境&#xff0c;让FP商家生存越来越艰难&#xff0c;今天就着重讲一…

【踩坑】JDK1.8 AudioSystem 无法关闭流的问题

文章目录 一、前言二、开始狼人杀嫌疑人1&#xff1a;嫌疑人2&#xff1a; 三、复盘Jdk8原生bug解决方法和原理解析 一、前言 做了一个基于文字转语言的小接口&#xff0c;想删除本地wav文件来着&#xff0c;结果发现删除不了。 很明显被占用了&#xff0c;还是被Java占用了……

Linux内核源码分析(强烈推荐收藏!)

前言&#xff1a;Linux内核是由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在1991年开始开发的。当时他为了得到一个可以运行UNIX操作系统的个人计算机&#xff0c;开始编写一个操作系统内核&#xff0c;并将其命名为Linux。随后&#xff0c;越来越多的开发者加入到项…

【论文】:ALOHA双手远程操作手臂

对于机器人来说&#xff0c;诸如穿扎带或插入电池等精细操作任务是众所周知的困难&#xff0c;因为它们需要精确度、接触力的仔细协调以及闭环视觉反馈。执行这些任务通常需要高端机器人、精确的传感器或仔细的校准&#xff0c;这些可能既昂贵又难以设置。学习能否使用低成本且…

计算机组成原理之计算机硬件发展和计算机系统的组成

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

算法第4版 第2章排序

综述&#xff1a;5个小节&#xff0c;四种排序应用&#xff0c;初级排序、归并排序、快速排序、优先队列 2.1.初级排序 排序算法模板&#xff0c;less(), exch(), 排序代码在sort()方法中&#xff1b; 选择排序&#xff1a;如升序排列&#xff0c;1.找到数组中最小的元素&am…

llama_index 创始人为我们展示召回提升策略(提升15%)

用句子向量替换为句子向量 句子检索&#xff0c;将句子转化为向量。在检索的过程中&#xff0c;假如句子命中&#xff0c;则将句子周围的内容也当做检索内容。 对比句子检索和之前的按块去做切分的检索。可以看到&#xff0c;内容的相关性提升了8%&#xff0c; 构建数据的时候…

如何利用ChatGPT快速生成月报?

随着每个月的结束&#xff0c;个人和团队经常需要编写月报来回顾和总结。这项任务通常消耗大量时间和精力。幸运的是&#xff0c;借助ChatGPT&#xff0c;这个过程可以变得更加简单和高效。接下来&#xff0c;我将详细介绍如何利用ChatGPT快速生成月报&#xff0c;从而帮助你节…