k8s存储之PV、PVC
在k8s集群中,资源存储会散落到各个工作节点上,这样对用资源调用很不方便,那么k8s是如何实现存储资源共享的呢,本文浅尝辄止的探讨一下,k8s是通过pv、pvc实现的。
一、PV、PVC的概念
1、持久卷(PV)
pv是PersistentVolume的缩写,pv是集群中的一块存储,可以由管理员事先制备, 或者使用存储类(Storage Class)来动态制备。 持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,拥有独立于任何使用 PV 的 Pod 的生命周期。
2、持久卷声明(PVC)
pvc是PersistentVolumeClaim的缩写, 是用户对存储的请求,PVC 申领会耗用 PV 资源。pvc的访问模式有 ReadWriteOnce、ReadOnlyMany、ReadWriteMany、ReadWriteOncePod。
二、PV、PVC的生命周期
1、制作PV
PV 卷的制备有两种方式,静态制备或动态制备。静太制作集群管理员创建若干 PV 卷,这些卷对集群用户可用,可供用户消费。动态制备,当没有提前制作好的pv卷供pvc匹配,集群可以尝试为该 PVC 申领动态制备一个存储卷。
2、绑定
用户创建一个带有特定存储容量和特定访问模式需求的 PersistentVolumeClaim 对象, 控制平面中的控制回路监测新的 PVC 对象,寻找与之匹配的 PV 卷 并将二者绑定到一起。。
3、使用
Pod 将 PVC 申领当做存储卷来使用。集群会检视 PVC 申领,找到所绑定的卷, 并为 Pod 挂载该卷。对于支持多种访问模式的卷, 用户要在 Pod 中以卷的形式使用申领时指定期望的访问模式。
4、回收策略
当用户不再使用其存储卷时,他们可以从 API 中将 PVC 对象删除, 从而允许该资源被回收再利用。PersistentVolume 对象的回收策略告诉集群, 当其被从申领中释放时如何处理该数据卷。 目前,数据卷可以被 Retained(保留)、Recycled(回收)或 Deleted(删除)。
(1)保留(Retain)
回收策略 Retain 使得用户可以手动回收资源。当 PersistentVolumeClaim 对象被删除时,PersistentVolume 卷仍然存在,对应的数据卷被视为"已释放(released)"。 由于卷上仍然存在之前用户的数据,该卷还不能用于其他申领。如果需要继续使用这一块的资源,需要手动手动删除所关联的存储数据。
(2)删除(Delete)
对于支持 Delete 回收策略的卷插件,删除动作会将 PersistentVolume 对象从 Kubernetes 中移除,同时也会从外部基础设施中移除所关联的存储资产。
(3)回收(Recycle)
目前已经废弃,推荐使用动态制作。
三、NFS服务搭建
1、文件存储技术分类
分布式的文件存储技术实现常用的有三种:
(1)块存储ISCSI
优点:速率块 不可取代 可以简单的方式实现数据的可用性
缺点:不可共享 以及 文件系统的约束
(2)文件存储 NFS
优点:实现了数据共享、构建资金较低
缺点:速率较慢
(3)对象存储 MFS
优点:实现了数据共享、读写效率高、有更高的磁盘IO 网络 IO,存储量级更高
缺点:造价高 难度实现大
2、NFS部署
本文使用nfs作为存储类型
(1)安装nfs-utils
yum install -y nfs-utils rpcbind
(2)配置挂载点
mkdir -p /home/data/nfs
vim /etc/exports/home/data/nfs *(insecure,rw,sync,no_root_squash)exports -r
(3)启动nfs服务
systemctl start rpcbindsystemctl start nfs
systemctl status nfs
(4)节点挂载
假如主节点的主机名为server200,那么从节点的安装步骤按照前三步执行。然后在各个节点执行挂载命令即可:
mount –t nfs server205:/home/data/nfs /home/data/nfs
showmount -e server205

四、PV、PVC创建与应用
1、编写pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: k8s-dep-pvnamespace: wmy-dev
spec:capacity:storage: 256MiaccessModes:- ReadWriteManystorageClassName: nfsnfs:path: /home/data/nfs/testserver: server205
kubectl apply -f pv.yaml
2、编写pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: k8s-dep-pvcnamespace: wmy-dev
spec:resources:#申请资源requests:storage: 256MiaccessModes:- ReadWriteManystorageClassName: nfs
kubectl apply -f pvc.yaml
3、应用PVC资源
安装一个nginx服务,将其根目录挂载到/home/data/nfs/test
apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginxnamespace: wmy-dev
spec:replicas: 1selector:matchLabels:app: my-nginxtemplate:metadata:labels:app: my-nginxspec:containers:- name: k8s-depimage: ningximagePullPolicy: IfNotPresentports:- containerPort: 80name: tcpprotocol: TCPvolumeMounts:- name: v-nfs# 容器内需要挂载的目录文件mountPath: /usr/share/nginx/htmlvolumes:# 容器卷名称,按照规范命名即可,与挂载名称volumeMounts保持一致- name: v-nfspersistentVolumeClaim:claimName: k8s-dep-pvc
kubectl apply -f nginx.yaml
相关文章:
k8s存储之PV、PVC
在k8s集群中,资源存储会散落到各个工作节点上,这样对用资源调用很不方便,那么k8s是如何实现存储资源共享的呢,本文浅尝辄止的探讨一下,k8s是通过pv、pvc实现的。 一、PV、PVC的概念 1、持久卷(PV) pv是Pe…...
go-基于逃逸分析来提升性能程序
go-基于逃逸分析来提升性能程序 为什么要学习逃逸分析: 为了提高程序的性能,通过逃逸分析我们能知道指标是分配到堆上还是栈上,如何是 分配到栈上,内存的分配和释放都是由编译器进行管理的,分配和释放的速度都非常的…...
[软件工具]文档页数统计工具软件pdf统计页数word统计页数ppt统计页数图文打印店快速报价工具
文档页数统计工具软件——打印方面好帮手 在信息化时代,文档已成为我们工作、学习、生活中不可或缺的一部分。无论是学术论文、商业报告,还是个人日记,都需要我们对其进行有效的管理。而在这个过程中,文档页数统计工具软件就显得…...
linux编译ffmpeg动态库
1,获取源码:git clone https://git.ffmpeg.org/ffmpeg.git 2,创建编译目录,并编译、安装, cd ffmpeg mkdir build cd build ../configure --prefix~/ffmpeg --enable-shared --enable-debug1 //configure后需要使…...
Unity3d Cinemachine篇(完)— TargetGroup
文章目录 前言使用TargetGroup追随多个模型1. 创建二个游戏物体2. 创建TargetGroup相机3. 设置相机4. 完成 前言 上一期我们简单的使用了ClearShot相机,这次我们来使用一下TargetGroup 使用TargetGroup追随多个模型 1. 创建二个游戏物体 2. 创建TargetGroup相机 3…...
事件驱动架构:使用Flask实现MinIO事件通知Webhooks
MinIO的事件通知可能一开始看起来并不激动人心,但一旦掌握了它们的力量,它们就能照亮您存储桶内的动态。事件通知是一个全面、高效的对象存储系统中的关键组件。Webhooks是我个人最喜欢的工具,用于与MinIO集成。它们在事件的世界中就像一把瑞…...
力扣面试150 只出现一次的数字Ⅱ 哈希 统计数位 DFA有穷自动机
Problem: 137. 只出现一次的数字 II 文章目录 思路💖 哈希💖 位数统计💖 DFA 状态机 思路 👨🏫 参考 💖 哈希 ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( n ) O(n) O(n) cl…...
R语言学习case10:ggplot基础画图Parallel Coordinate Plot 平行坐标图
step1: 导入ggplot2库文件 library(ggplot2)step2:带入自带的iris数据集 iris <- datasets::irisstep3:查看数据信息 dim(iris)维度为 [150,5] head(iris)查看数据前6行的信息 step4:利用ggplot工具包绘图 plot5 <- ggparcoord(…...
Easy Excel动态表头的实现
步骤: 1.查找官方API文档理解实现 2.实现融入到代码里面 一:Easy Excel动态头实时生成头写入 动态头实时生成头写入 二:实现 目的:实现表头为,第一列是固定列,第二列为动态生成的时间段的每一天的日期…...
kvm qemu 优化 windows 虚拟机速度
主要优化磁盘 io 和网络 io 都选为 virtio windows 驱动下载 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.185-2/virtio-win-0.1.185.iso I also had incredibly slow performance with my virtual HDD. The followin…...
银行数据仓库体系实践(18)--数据应用之信用风险建模
信用风险 银行的经营风险的机构,那在第15节也提到了巴塞尔新资本协议对于银行风险的计量和监管要求,其中信用风险是银行经营的主要风险之一,它的管理好坏直接影响到银行的经营利润和稳定经营。信用风险是指交易对手未能履行约定契约中的义务而…...
每日一练 | 华为认证真题练习Day179
1、关于配置STUB区域需要注意的事项中描述正确的是 A. 骨干区域可以配置成为STUB区域 B. 如果将一个区域配置成为STUB区域,则该区域中的所有路由器都要配置STUB区域属性 C. STUB区域可以存在ASBR D. 虚连接可以穿越STUB 2、关于PIM-SM中的HellO报文的描述&#…...
[ubuntu]add-apt-repository 添加以及移除
add-apt-repository是一个用于添加PPA(Personal Package Archive)存储库的命令。它是Ubuntu和基于Ubuntu的Linux发行版中的apt软件包管理系统的一部分。 PPA存储库允许用户安装和更新软件包,这些软件包不包含在官方软件源中。通过添加PPA存储…...
PySpark(二)RDD基础、RDD常见算子
目录 RDD RDD五大特性 RDD创建 RDD算子 常见的Transformation算子 map flatMap mapValues reduceByKey groupBy filter distinct union join intersection glom groupByKey groupByKey和reduceByKey的区别 ? sortBy sortByKey 常见的action算子 countByKey…...
修改MFC图标
摘要:本文主要讲解了MFC程序窗口图标的添加、任务栏、底部托盘的图标添加,以及所生成的exe文件图标的添加。 1、在资源视图添加Icon资源 透明图标怎么制作? 1)点击图片》右键:使用画图3D进行编辑 2&a…...
springboot158基于springboot的医院资源管理系统
简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...
【算法】枚举——蓝桥杯、日期统计、特殊日期(位数之和)、2023、特殊日期(倍数)、跑步锻炼
文章目录 蓝桥杯日期统计特殊日期(位数之和)2023特殊日期(倍数)跑步锻炼 蓝桥杯 日期统计 日期统计 如果暴力枚举100个数的八次循环那就是1016次运算,时间复杂度太高了,好在前四次的2023是确定的…...
基于flask的个人博客项目从0到1
项目展示(持续完善中…) 首页 文章时间线页面 笔记页面 留言页面 关于页面 后台页面-文章管理 后台页面-笔记页面 后台页面-分类 后台管理-新增标签 后台管理-标签页面 后台管理-新增标签 后台管理-关于页面 2.项目详述 该博客开源地址点击跳转,该项目已部署上…...
基于OpenCV灰度图像转GCode的单向扫描实现
基于OpenCV灰度图像转GCode的单向扫描实现 引言单向扫描存在的问题灰度图像单向扫描代码示例结论 系列文章 ⭐深入理解G0和G1指令:C中的实现与激光雕刻应用⭐基于二值化图像转GCode的单向扫描实现⭐基于二值化图像转GCode的双向扫描实现⭐基于二值化图像转GCode的…...
JAVA生成Word文档
第一步:导入依赖 <!--生成word文档--> <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.3</version> </dependency> <!--数字转为汉字大写--> <depend…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
