k8s 存储卷和pvc,pv

存储卷---数据卷

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

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

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

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

1,emptyDir

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

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

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

kubectl create deployment nginx --image=nginx:1.22 --replicas=3 --dry-r un=client -o yaml > test1.yaml

#第一-个name,存储的名称,可以自定义,mountPath,定义容器内的挂载目录点,和节点或者其他容器的共享目录

#引用.上一个挂载的名称,表示我将和/us r/share/nginx/html/这个目录挂载,由data目录和他挂载

进入容器,指定容器 -c 指定

kubectl exec -it nginx-74d46b66bd-747x2 -c nginx1 bash

只能用于容器内部共享文件

例如:lnmp中

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

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

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

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

emptyDir如果被驱逐,共享数据会丢失。

将pod删除之后,节点上的数据还在

3,NFS共享存储:

在k8s4上做创建一个volumes

查看暴露出来的共享目录

在其他机器上查看

nfs两种方式

1,server可以是共享节点的ip地址,也可以是主机名,主机名要做映射。

所有的pob内的目录都和节点上的nfs共享绿形成数据卷,所有 的数据文件都保存在共享目录当中,

2,用域名一定要做主机映射

kubectl delete -f test1.yaml

可以基于yaml文件删除pod,yaml文件还在

工作中最常见的存储卷的方式是hostPath,NFS

推荐nfs

pvc和pv

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

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

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

pvc:---->pv-----NFS

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

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

匹配最优的pv3,只有pv3被占用了,才会选择pv4

pvc和pv 有两种请求方式,静态请求和动态请求

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

pv是集群当中的存储资源,pvc请求存储资源,也是对存储资源的一个检索(检查索引)选择一个最合适的pv来存储资源。篇v和pvc之间是有生命周期管理:

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

配置:静态,动态

绑定:就是把pv分配给pvc

使用:就是pod提供pvc使用存储资源

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

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

pv的状态:

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

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

released:释放,pvc已经被删除了,但是pv的存储资源还没有被集群回收Failed:表示pv资源回收失败,而且pv为不可用状态。

支持的读写方式:

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

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

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

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

hostPath:只支持ReadWriteOnce 方式

SCSI

ISCS不支持ReadWriteMany

lsscsi

iscsiadm -m session -P 3

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

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

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

hostPath:支持ReadWriteOnce 方式。

在生产中要检查

集群回收pv资源的方式:

Retain 保留,pod和挂载点的数据不会被删除(默认即可)

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

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

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

暴露多个nfs共享文件

在其他节点查看

编辑pv文件

vim pv.yaml

编写pvc文件

vim pvc.yaml

根据需求精确匹配

kubectl apply -f pvc.yaml

pvc----请求用哪个pv的存储----pv和物理存储做映射(挂载)----物理设备提供存储卷

删除pvc,要先删除pod

表示回收完毕

恢复pv到可用状态:

删除红框内的部分

kubectl edit pv pv003

设定回收策略:

将pv003和pv004更改回收策略Recycle

回收完之后,资源会被删除

删除pvc之后

Delete策略,只支持动态卷

返回原状态

kubectl edit pv pv003

总结:

k8s当中存储卷的模式:

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

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

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

pv和pvc

pvc请求-----pv的存储资源------硬盘空间(NFS)

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

hostPath仅支持支持ReadWriteOnce方式。

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

检索挂载方式和读写模式

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

谁合适选谁

保留:默认可以不写.

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

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

静态比较麻烦,自动的匹配pv资源呢?动态pvc

在工作当中静态pv和pvc

运维负责:创建好持久化存储卷,声明好读写和挂载类型 以及可用提供的存储空间

pvc开发做,要和开发沟通好,你期望的读写和挂载类型,以及存储空间。

动态pv

当我发布pvc之后可用生成pv,还可用在共享服务器上之间生成挂载目录。

pvc从直接绑定和使用pv

动态pv需要两个组件:

1,卷插件,k8s本身支持的动态篇v插件不包括nfs,需要声明和安装一个外部插件

Provisioner:存储分配器。动态创建pv,任何根据pvc的请求自动绑定和使用。

2,StorageClass:来定义pv的属性,存储类型,大小,回收策略。

还是用nfs来实现动态PV,NFS支持的方式NFS-client,Provisioner来适配nfs-client nfs-client-provisioner卷插件。

实验

先插件一个共享目录

mkdir k8s

chmod 777 k8s

vim /etc/exports

/opt/k8s 192.168.176.0/24(rw,no_root_squash,sync)

systemctl restart rpcbind

systemctl restart nfs

showmount -e

在其他节点查看

先创建一个serviceAccountl

NFS PRovisioner:是一个插件,没有权限是无法再集群当中获取k8s的消息。插件要有权限能够监听apiserver,获取get,list(获取集群的类别资源)create delete

vim nfs-client-rbac.yaml

rbac:Rple-based ACCESS CONTROL

定义角色在集群当中可以使用的权限

-apiGroups: [""]

#apigroups定义了规则使用哪个API的组,空字符"",代表直接使用API的核心组的资源。

verbs: ["get","list","watch","create","delete"]

#表示权限的动作

kubectl apply -f nfs-client-rbac.yaml

角色 权限都已经创建完毕

部署插件:NFS -privisioner。deplpyment来创建插件 pod

1.20 之后有一个新的机制

selfLink:API的资源对象之一,表示资源对象在集群当中自身的一个连接,self-link是一个唯一标识符号,可以用于标识k8s集群当中每个资源的对象。

self link是值是一个URL,指向改资源对象的k8s api的路径。

更好的实现资源对象的查找和引用。

vim /etc/kubernetes/manifests/kube-apiserver.yaml

feature-gates=RemoveSelfLink=false

feature-gates:在不破坏现有规则以及功能基础_上引入新功能或者修改现有功能的机制。禁用不影响之前的规则。

部署nfs-provisioner的插件:

nfs的provisioner的客户端已pod的方式运行在集群当中,监听k8s集群当中pv的请求。动态的创建于nfs服务器相关的pv。

容器里使用的配置,在provisioner当中定义好环境变量,传给容器。storageclasss的名称,nfs服务器的地址,nfs的目录。

vim nfs-client-provisioner.yaml

provisioner要创建pv,在共享目录里创建的

创建 StorageClass,负责建立 PVC 并调用 NFS provisioner 进行预定的工作,并让 PV 与 PVC 建立关联

vim nfs-client-storageclass.yaml

kubectl apply -f nfs-client-storageclass.yaml

kubectl get storageclasses.storage.k8s.io

NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE

nfs-client-storageclass nfs-storage Retain Immediate true 106s

NAME: StorageClass 的名称,这里是 nfs-client-storageclass。

PROVISIONER: Provisioner 的名称,这里是 nfs-storage。它指定了用于动态创建 PV 的 Provisioner。

RECLAIMPOLICY: 回收策略,这里是 Delete。表示当 PersistentVolume(PV)被释放时,它的数据将被删除。

其他可能的值包括 Retain,表示在释放 PV 时保留数据。

VOLUMEBINDINGMODE: 卷绑定模式,这里是 Immediate。表示当 PVC 请求创建 PV 时,

系统会立即绑定一个可用的 PV。另一种可能的值是 WaitForFirstConsumer,

表示系统将等待第一个使用者出现后再绑定 PV。

ALLOWVOLUMEEXPANSION: 允许卷扩展,这里是 false。表示不允许扩展 PV 的容量。

如果设置为 true,则表示允许在运行时扩展 PV 的容量。

创建 PVC 和 Pod 测试

vim test-pvc-pod.yaml

总结:动态pv

provisioner插件---支持nfs

stroagclass:定义pv的属性

动态pv的默认策略是删除(面试题)

动态pv删除之后的状态,released。

1,插件账号,给卷插件能够在内部通信,获取资源,监听事件,插件,删除,更新pv

2,插件卷插件pod,卷插件的pod插件pv

3,storageclass:给pv赋予属性(pvc删除之后pv的状态,以及回收策略)

4,插件pvc----完成。

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

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

相关文章

rime中州韵小狼毫 LaTex输入法配置

教程目录:rime中州韵小狼毫须鼠管安装配置教程 保姆级教程 100增强功能配置教程 本文的分享一种在rime中州韵小狼毫须鼠管输入法中配置LaTex输入方案的方法,并不完美,仅供参考。 先睹为快 LaTex输入方案可以快捷的在公式模式下输入一些基础…

C#编程-使用事件

使用事件 事件是一个动作或发生的事情,例如:鼠标点击、按键、鼠标移动或系统产生的通知。应用程序可以在事件发生的时候做出响应。通知的一个示例是中断。事件是对象发生的消息以表示事件的发生。事件是进程内通信的有效方法。它们对对象时有用的,因为它们标识了单个状态改…

C#--核心

CSharp核心知识点学习 学习内容有: 绪论:面向对象的概念 Lesson1:类和对象 练习: Lesson2:封装--成员变量和访问修饰符 练习: Lesson3:封装--成员方法 Lesson4:封装--构造函数和析构函数 知识点四 垃圾回收…

OpenCV——图像按位运算

目录 一、算法概述1、逻辑运算2、函数解析3、用途 二、代码实现三、结果展示 OpenCV——图像按位运算由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法概述 1、逻辑运算 OpenCV4 针对两个图像之…

查看服务器的yum 源

1、cd /etc/yum.repos.d 2、编辑 CentOS-Stream-Sources.repo 3、 查看里面的yum源地址 4、更新yum源,执行下面指令 yum clean all # 清除系统所有的yum缓存 yum makeacache # 生成新的yum缓存 yum repolist

SQL-用户管理与用户权限

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

Qt/QML编程之路:Grid、GridLayout、GridView、Repeater(33)

GRID网格用处非常大,不仅在excel中,在GUI中,也是非常重要的一种控件。 Grid 网格是一种以网格形式定位其子项的类型。网格创建一个足够大的单元格网格,以容纳其所有子项,并将这些项从左到右、从上到下放置在单元格中。每个项目都位于其单元格的左上角,位置为(0,0)。…

Ubuntu共享文件到win

Ubuntu共享文件到win 1、安装samba sudo apt-get install samba samba-common2、创建一个共享文件夹,并设置777权限 mkdir /home/qyh/share sudo chmod 777 /home/qyh/share我的用户名:qyh。 3、添加用户及密码 sudo smbpasswd -a qyh4、修改配置文…

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包:"/apex/com.android.wifi/javalib…

【C++】“Hello World!“

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 ​ 2024.1.14 纪念一下自己编写的第一个C程序 #include<iostream>int main() {/*我的第一个C程序*/std::cout << "Hello world!:>" <<std::endl;ret…

蓝桥杯备赛 | 洛谷做题打卡day3

蓝桥杯备赛 | 洛谷做题打卡day3 sort函数真的很厉害&#xff01; 文章目录 蓝桥杯备赛 | 洛谷做题打卡day3sort函数真的很厉害&#xff01;【深基9.例1】选举学生会题目描述输入格式输出格式样例 #1样例输入 #1 样例输出 #1 我的一些话 【深基9.例1】选举学生会 题目描述 学校…

腾讯云主机价格表和优惠活动汇总(2024年更新)

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

Javaweb之SpringBootWeb案例新增部门的详细解析

2.3 删除部门 查询部门的功能我们搞定了&#xff0c;下面我们开始完成删除部门的功能开发。 2.3.1 需求 点击部门列表后面操作栏的 "删除" 按钮&#xff0c;就可以删除该部门信息。 此时&#xff0c;前端只需要给服务端传递一个ID参数就可以了。 我们从接口文档中也…

致远OA getAjaxDataServlet XXE漏洞复现(QVD-2023-30027)

0x01 产品简介 致远互联-OA 是数字化构建企业数字化协同运营中台,面向企业各种业务场景提供一站式大数据分析解决方案的协同办公软件。 0x02 漏洞概述 致远互联-OA getAjaxDataServlet 接口处存在XML实体注入漏洞,未经身份认证的攻击者可以利用此漏洞读取系统内部敏感文件…

EasyExcel简单实例

EasyExcel简单实例 准备工作场景一&#xff1a;读取 Student 表需求1&#xff1a;简单读取需求2&#xff1a;读取到异常信息时不中断需求3&#xff1a;读取所有的sheet工作表需求4&#xff1a;读取指定的sheet工作表需求5&#xff1a;从指定的行开始读取 场景二&#xff1a;写入…

vue3中ref和reactive联系与区别以及如何选择

vue3中ref和reactive区别与联系 区别 1、ref既可定义基本数据类型&#xff0c;也可以定义引用数据类型&#xff0c;reactive只能定义应用数据类型 2、ref在js中取响应值需要使用 .value&#xff0c;而reactive则直接取用既可 3、ref定义的对象通过.value重新分配新对象时依旧…

Web3去中心化存储:重新定义云服务

随着Web3技术的崭露头角&#xff0c;去中心化存储正在成为数字时代云服务的全新范式。传统的云服务依赖于中心化的数据存储架构&#xff0c;而Web3的去中心化存储则为用户带来了更安全、更隐私、更可靠的数据管理方式&#xff0c;重新定义了云服务的未来。 1.摒弃中心化的弊端 …

如何在 openKylin 上安装 ONLYOFFICE 文档?

文章作者&#xff1a;ajun ONLYOFFICE 文档是一款全面的在线办公工具&#xff0c;提供了文本文档、电子表格和演示文稿的查看和编辑功能。它高度兼容微软 Office 格式&#xff0c;包括 .docx、.xlsx 和 .pptx 等文件格式&#xff0c;并支持实时协作编辑&#xff0c;使团队成员能…

边缘计算AI智能分析网关V4算力分析及应用场景

一、硬件介绍 智能分析网关V4是TSINGSEE青犀视频推出的一款高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;硬件采用BM1684芯片&#xff0c;集成高性能8核ARM A53&#xff0c;主频高达2.3GHz。硬件内置近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、…

SQL:一行中存在任一指标就显示出来

当想要统计的两个指标不在一张表中时&#xff0c;需要做关联。但很多情况下&#xff0c;也没有办法保证其中一张表的维度是全的&#xff0c;用left join或right join可能会导致数据丢失。所以借助full join处理。 1&#xff09;如&#xff0c;将下面的数据处理成表格中的效果&…