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

6、kubenetes 卷

1、什么是卷

在某些场景下,我们可能希望新的容器可以在之前容器结束的位
置继续运⾏,⽐如在物理机上重启进程。可能不需要(或者不想要)
整个⽂件系统被持久化,但又希望能保存实际数据的⽬录。
Kubernetes通过定义存储卷来满⾜这个需求,它们不像pod这样的
顶级资源,⽽是被定义为pod的⼀部分,并和pod共享相同的⽣命周
期。这意味着在pod启动时创建卷,并在删除pod时销毁卷。因此,在
容器重新启动期间,卷的内容将保持不变,在重新启动容器之后,新
容器可以识别前⼀个容器写⼊卷的所有⽂件。另外,如果⼀个pod包含
多个容器,那这个卷可以同时被所有的容器使⽤。

2、卷的类型

2.1 emptyDir

最简单的卷类型是emptyDir卷,卷从⼀个空⽬录开始,运⾏在pod内的
应⽤程序可以写⼊它需要的任何⽂件。因为卷的⽣存周期与pod的⽣存
周期相关联,所以当删除pod时,卷的内容就会丢失。
emptyDir卷是最简单的卷类型,但是其他类型的卷都是在它的基础
上构建的,在创建空⽬录后,它们会⽤数据填充它。

2.2 gitRepo

gitRepo卷基本上也是⼀个emptyDir卷,它通过克隆Git仓库并在pod
启动时(但在创建容器之前)检出特定版本来填充数据
gitRepo容器就像emptyDir卷⼀样,基本上是⼀个专⽤⽬录,专门
⽤于包含卷的容器并单独使⽤。当pod被删除时,卷及其内容被删除。

2.3 hostPath

hostPath卷指向节点⽂件系统上的特定⽂件或⽬录。在同⼀个节点上运⾏并在其hostPath
卷中使⽤相同路径的pod可以看到相同的⽂件。

hostPath卷是我们介绍的第⼀种类型的持久性存储,因为gitRepo和
emptyDir卷的内容都会在pod被删除时被删除,⽽hostPath卷的内容则不
会被删除。如果删除了⼀个pod,并且下⼀个pod使⽤了指向主机上相
同路径的hostPath卷,则新pod将会发现上⼀个pod留下的数据,但前提
是必须将其调度到与第⼀个pod相同的节点上。
查看kubectl-system 是否存在hostPath 卷
一般都是kubenetes放配置文件才会放到hostpath卷
⼤多数情况下都使⽤这种类型的卷来访问节点的⽇志⽂件、kubeconfig(Kubernetes配置⽂件)
或CA证书。请记住仅当需要在节点上读取或写⼊系统⽂件时才使⽤
hostPath,切勿使⽤它们来持久化跨pod的数据。

3、持久化存储

3.1 GCE (Google Compute Engine) 

创建GCE持久磁盘

同⼀区域中创建GCE持久磁盘

 使 ⽤ gce Persistent Disk 卷 的 pod: mongodbpodgcepd.yaml

如果要使⽤Minikube,就不能使⽤GCE持久磁盘,但是可以
部署mongodb-pod-hostpath.yaml,这个使⽤的是hostpath卷⽽不是GCE
持久磁盘。
pod包含⼀个容器和⼀个卷,被之前创建的GCE持久磁盘⽀持。因为MongoDB就是在
/data/db上存储数据的,所以容器中的卷也要挂载在这个路径上

3.2 AWS弹性块存储卷

AWS弹性块存储(Aws Elastic Block Store)

3.3 NFS

如果集群是运⾏在⾃有的⼀组服务器上,那么就有⼤量其他可移
植的选项⽤于在卷内挂载外部存储。例如,要挂载⼀个简单的NFS共
享,只需指定NFS服务器和共享路径

3.4 其他

其他的⽀持选项包括⽤于挂载ISCSI磁盘资源的iscsi,⽤于挂载
GlusterFS的glusterfs,适⽤于RADOS块设备的rbd,还有fiexVolume、
cinder、cephfs、fiocker、fc(光纤通道)等。rbd如果你不会使⽤到它
们,就不需要知道所有的信息。这⾥提到是为了展⽰Kubernetes⽀持⼴
泛的存储技术,并且可以使⽤喜欢和习惯的任何存储技术。

4、持久卷使用

4.1 NFS、PV(PersistentVolume)、PVC(PersistentVolumeClain

NFS 储存服务器
真实磁盘PersistentVolume 持久卷,简称PV
持久分区目录PVC PersistentVolumeClain 持久卷声明
指定所需要的最低容量要求和访问模式,然后⽤户将持久卷声明清单提交给Kubernetes
API服务器,Kubernetes将找到可匹配的持久卷并将其绑定到持久卷声
明

4.2 创建持久卷

# 查看现有持久卷
kubectl get pv

4.3 创建持久卷声明 绑定持久卷

# 查看现有持久卷
kubectl get pvc# 查看yaml
kubectl get pvc datadir-zk-0 -o yaml -n ydxs-uat
# 修改yaml
kubectl edit pvc datadir-zk-0 -o yaml -n ydxs-uatRWO——ReadWriteOnce——仅允许单个节点挂载读写。
ROX——ReadOnlyMany——允许多个节点挂载只读。
RWX——ReadWriteMany——允许多个节点挂载读写这个卷。

# 查看持久卷
​​kubectl get pv持久卷显⽰被绑定在default/mongodb-pvc的声明上,这个default部
分是声明所在的命名空间(在默认命名空间中创建的声明),我们之
前有提到过持久卷是集群范围的,因此不能在特定的命名空间中创
建,但是持久卷声明又只能在特定的命名空间创建,所以持久卷和持
久卷声明只能被同⼀命名空间内的pod创建使⽤。

4.4 创建pod 绑定持久卷声明

4.5 创建持久卷声明的好处

是研发⼈员不需要关⼼底层实际使⽤的存储技术。
可以对卷的进行声明配置

4.6 卷的回收 Retain  Recycle  Delete

⼿动回收持久卷 persistentVolumeReclaimPolicy 配置
设 置 为 Retain 从 ⽽ 通 知 到
Kubernetes,我们希望在创建持久卷后将其持久化,让Kubernetes可以
在持久卷从持久卷声明中释放后仍然能保留它的卷和数据内容。据我
所知,⼿动回收持久卷并使其恢复可⽤的唯⼀⽅法是删除和重新创建
持久卷资源。当这样操作时,你将决定如何处理底层存储中的⽂件:
可以删除这些⽂件,也可以闲置不⽤,以便在下⼀个pod中复⽤它们。⾃动回收持久卷 persistentVolumeReclaimPolicy 配置
Recycle 删除卷的内容并使卷可⽤于再次声明,通过这种⽅式,持久卷可以被不同的
持久卷声明和pod反复使⽤Delete 策略删除底层存储。需要注意当前GCE持久磁盘
⽆法使⽤Recycle选项。这种类型的持久卷只⽀持Retain和Delete策略,
其他类型的持久磁盘可能⽀持这些选项,也可能不⽀持这些选项

4.7 StorageClass 

# 创建 sc

创建StorageClass资源后,⽤户可以在其持久卷声明中按名称引⽤
存储类。
创建⼀个请求特定存储类的PVC定义
可以修改mongodb-pvc以使⽤动态配置。以下代码清单显⽰了PVC
中更新后的YAML定义。

# 查看pvc
kubectl get pvc

# 自动生成pv

相关文章:

6、kubenetes 卷

1、什么是卷 在某些场景下,我们可能希望新的容器可以在之前容器结束的位 置继续运⾏,⽐如在物理机上重启进程。可能不需要(或者不想要) 整个⽂件系统被持久化,但又希望能保存实际数据的⽬录。 Kubernetes通过定义存储…...

前端学习笔记 | Node.js

一、Node.js入门 1、什么是Node.js 定义:是跨平台JS运行环境(可以独立执行JS的环境)作用: 编写数据接口,提供网页资源功能等等前端工程化:为后续学Vue和React等框架做铺垫 2、Node.js为何能执行JS&#xff…...

Spark-Scala语言实战(3)

在之前的文章中,我们学习了如何在来如何在IDEA离线和在线安装Scala,想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实…...

diffusion model(十四): prompt-to-prompt 深度剖析

infopaperPrompt-to-Prompt Image Editing with Cross Attention Controlgithubhttps://github.com/google/prompt-to-promptOrg:Google Research个人复现https://github.com/myhz0606/diffusion_learning个人博客主页http://myhz0606.com/article/p2p 1 前言 基于扩散模型&a…...

线性表的顺序表示(顺序表)

静态分配&#xff1a; #include <stdbool.h> #include <stdio.h>typedef int ElementType;#define MaxSize 50 typedef struct {ElementType data[MaxSize];int length; }SqList;//初始化 //SqList L; void InitList(SqList L) {L.length 0; }//插入 bool ListIn…...

矩阵A的LU分解

文章目录 1. 矩阵的逆矩阵1.1 AB的逆矩阵1.2 转置矩阵 2. 2X2矩阵A消元3. 3X3矩阵A消元4. 运算量5. 置换矩阵-左行右列 本文主要目的是为了通过矩阵乘法实现矩阵A的分解。 1. 矩阵的逆矩阵 1.1 AB的逆矩阵 假设A,B矩阵都可逆 A ( B B − 1 ) A − 1 I (1) A(BB^{-1})A^{-1}…...

深入了解Flutter中Future的全部工厂方法及使用

在Flutter中&#xff0c;Future是一种表示异步操作结果的对象。它代表了一个可能已经完成或尚未完成的计算&#xff0c;可以用来处理异步任务。Flutter提供了多种工厂方法来创建Future对象&#xff0c;每种方法都有其特定的用途和优势。在本文中&#xff0c;我们将深入探讨Flut…...

python的BBS论坛系统flask-django-nodejs-php

为了更好地发挥本系统的技术优势&#xff0c;根据BBS论坛系统的需求&#xff0c;本文尝试以B/S架构设计模式中的django/flask框架&#xff0c;python语言为基础&#xff0c;通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法&#xff…...

vulnhub-----pWnOS1.0靶机

文章目录 1.信息收集2.漏洞测试3.爆破hash4.提权 首先拿到一台靶机&#xff0c;就需要知道靶机的各种信息&#xff08;IP地址&#xff0c;开放端口&#xff0c;有哪些目录&#xff0c;什么框架&#xff0c;cms是什么&#xff0c;网页有什么常见的漏洞&#xff0c;如sql注入&…...

vue 消息左右滚动(前后无缝衔接)

演示效果 封装的组件 <!--* Author:* Date: 2024-03-21 19:21:58* LastEditTime: 2024-03-21 20:31:50* LastEditors: Please set LastEditors* Description: 消息左右滚动 --> <template><divid"textScroll"class"text-scroll"mousemove&…...

Qt如何直接处理系统事件(比如鼠标事件),而不是post事件

#include <QtGui/5.15.2/QtGui/qpa/qwindowsysteminterface.h> // 方便调试事件 QWindowSystemInterface::setSynchronousWindowSystemEvents(true); 直接再 qWindowsWndProc函数中处理 通常情况: 事件被放到一个队列中...

Web前端笔记+表单练习+五彩导航

一、笔记 表单&#xff1a;数据交互的一种方式 登录、注册、搜索 <from> <input type""> --- <input type"text"> --- 普通输入框&#xff0c;内容在一行显示 <input type"password"> --- 密码框 <input type"…...

软件架构和基于架构的软件开发方法知识总结

一、软件架构定义 软件架构为软件系统提供了一个结构、行为和属性的高级抽象 软件架构是一种表达&#xff0c;使软件工程师能够&#xff1a; &#xff08;1&#xff09;分析设计在满足所规定的需求方面的有效性 &#xff08;2&#xff09;在设计变更相对容易的阶段&#xff0c;…...

环信新版单群聊UIKit集成指南——Android篇

前言 环信新版UIKit已重磅发布&#xff01;目前包含单群聊UIKit、聊天室ChatroomUIKit&#xff0c;本文详细讲解Android端单群聊UIKit的集成教程。 环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开发的一款即时通讯 UI 组件库&#xff0c;提供各种组件实现会话列表、聊天界…...

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; ARM离线版本安装 官方提供了一个 arm 版本&#xff0c;但是好久都没更新了&#xff0c;地址&#xff1a;https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新&#xff0c;我看…...

mysql基础02

1.常用函数 字符串处理函数 length(str) 统计字符长度char_length(str) 统计以(单个字符为单位)的字符长度ucase/upper(str) 小写变大写lcase/lower(str) 大写变小写substr(s,start,end) 从s截start到end的字符串instr(str,"str1") str1在str的位置是? trim(str) 去…...

css的box-shadow详解

CSS的box-shadow属性用于在元素框上添加阴影效果。它可以为元素提供外阴影或内阴影&#xff0c;并且可以控制阴影的颜色、偏移距离、模糊半径以及扩展半径。 box-shadow属性的基本语法如下&#xff1a; box-shadow: h-shadow v-shadow blur spread color inset;下面是各个参数…...

递归的个人总结

递归函数&#xff08;递去、回归&#xff09;是函数不断的调用自己&#xff1b; 可以按照如下来理解&#xff1a;func1中调用func2&#xff0c;func2中调用func3; func3函数返回了&#xff0c;继续执行func2中的语句&#xff1b;func2执行完了&#xff0c;继续执行func1之后的…...

使用PDFBox调整PDF每页格式

目录 一、内容没有图片 二、内容有图片 maven依赖&#xff0c;这里使用的是pdfbox的2.0.30版本 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version></dependency>…...

【3D reconstruction 学习笔记】

三维重建 3D reconstruction 1. 相机几何针孔相机摄像机几何 2. 相机标定线性方程组的解齐次线性方程组的解非线性方程组的最小二乘解透镜相机标定带畸变的相机标定 3. 单视图重建2D平面上的变换3D空间上的变换单视测量无穷远点 无穷远线 无穷远平面影消点 影消线单视重构 4. 三…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...