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-uat


RWO——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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯(3.21 刷真题)

P8682 [蓝桥杯 2019 省 B] 等差数列 import java.util.Arrays; import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int[] res new int[n1];for(int i1;i<n;i)res[i] sc.ne…

vue2 自定义 v-model (model选项的使用)

效果预览 model 选项的语法 每个组件上只能有一个 v-model。v-model 默认会占用名为 value 的 prop 和名为 input 的事件&#xff0c;即 model 选项的默认值为 model: {prop: "value",event: "input",},通过修改 model 选项&#xff0c;即可自定义v-model …

基于VJ算法(Viola-Jones algorithm)的人面定位算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

边缘自动隐藏窗体,透明度切换,同步父窗体标签切换winform

一、实现功能 默认的标签栏(superTabControl) 可以设置隐藏,即可实现全屏最大化。通过列表切换打开的标签页。用于定制B/S模式系统显示更个性,自定义样式,简介 安全 兼容性好。 二、主要代码 private void Time_Tick(object sender, EventArgs e) {获取主屏

停止docker 容器并删除对应镜像

docker 容器相关命令 docker ps 查看当前系统正在运行的容器情况&#xff0c;返回信息分别为&#xff1a; 容器ID&#xff1a;CONTAINER ID 镜像名IMAGE NAMES 运行命令COMMAND 创建时间CREATED 状态STATUS 映射端口 PORTS docker ps |grep XXX 可以…

Rust基本类型

数值类型 整数类型 无符号整数只能取正数和0&#xff0c;有符号整数可以取正数负数和0。isize和usize类型取决于程序运行的计算机CPU类型&#xff0c;若CPU是32位的&#xff0c;则这两个类型是32位的&#xff0c;若CPU是64位的&#xff0c;则它们是64位的。rust整型 默认使用…

vue/uniapp项目把public下的静态资源打包进dist目录

vue-cli包装的uniapp项目&#xff0c;需要把public下的静态资源打包进dist目录下&#xff0c; 如下图所示 解决方法&#xff1a; 安装依赖&#xff1a;yarn add copy-webpack-plugin -D;根路径新建vue.config.js文件 vue.config.js配置如下&#xff1a; const CopyPlugin …

手机如何设置静态IP地址显示

随着移动互联网的普及&#xff0c;手机已经成为我们日常生活中不可或缺的一部分。在连接无线网络时&#xff0c;我们有时需要设置手机的IP地址为静态&#xff0c;以满足特定的网络需求或解决某些网络问题。本文将指导您如何在手机上设置静态IP地址显示&#xff0c;让您更好地管…

C++语言学习(二)—— C++语言的基本知识

目录 一、面向对象的三个核心概念 二、C语言中的I/O口 三、C语言中的数据类型​​​​​​​ 3.1 逻辑类型 3.2 引用类型 3.2.1 引用作为函数参数 3.2.2 引用作为函数返回值 3.2.3 引用作为类成员 3.3 类类型 四、 C语言中的内联函数 五、 函数重载 六、 带默认形参…

【C++】狗屁不通文章生成器2.0

【C】狗屁不通文章生成器2.0 1 前言2 改进2.1 字词的前后关系2.2 文章生成系统 3 实现(部分)3.1 class wordpair3.1.1 转化为 json3.1.2 添加后缀词3.1.3 选择后缀词 3.2 class createArticle3.2.1文本分割3.2.2生成文章 4演示4.1 wordpair(3x2), 启动词(春天)4.2 wordpair(2x1…

2024.3.24 机器学习周报

目录 引言 Abstract 一、文献阅读 1、题目 2、引言 3、创新点 4、模型架构 4.1 Encoder and Decoder Stacks 4.2 Attention—注意力机制 5、实验 6、结果 二、Self-attention 1、什么是self-attention 2、例子&#xff08;x2→z2&#xff09; 3、矩阵批量处理 …

Linux--进程(1)

目录 前言 1.冯诺依曼体系结构 2. 操作系统(Operator System)--第一个被加载的软件 3.进程 3.1基本概念 3.2Linux中的PCB 3.3通过系统调用创建子进程-fork初识 fork&#xff1a;创建一个子进程 为什么要创建子进程&#xff1f; fork的原理&#xff1a; 进一步了解fo…

【Linux】调试器-gdb的使用说明(调试器的配置,指令说明,调试过程说明)

目录 00.背景 01.安装 02.生成调试信息 03.调试过程 00.背景 在软件开发中&#xff0c;通常会为程序构建两种不同的版本&#xff1a;Debug模式和Release模式。它们之间的区别主要在于优化级别、调试信息、错误检查等方面&#xff1a; 1.Debug 模式&#xff1a; 优化级别低…

灵境矩阵平台x百度---智能体(一)

什么是数据插件 大模型插件:大语言模型插件是随着大语言模型发展而诞生的全新插件。大语言模型插件的核心是Web API独立于大语言模型&#xff0c;插件开发过程不受大语言模型的约束&#xff0c;同时没有开发语言的限制&#xff0c;更加通用&#xff0c;只要WebAPI遵循RESTfuI相…

如何在 Odoo 17 的 齿轮菜单⚙️ 中添加新菜单

在 Odoo 中&#xff0c;齿轮菜单是一个重要组件&#xff0c;允许用户访问与系统内不同模型和功能相关的各种配置选项和设置。它通常由位于用户界面左上角的齿轮或齿轮图标表示。下图显示了 "sale.order "模型的齿轮菜单。 默认情况下&#xff0c;我们在 CogMenu 中提…

js 实现动画的两种方案对比:setTimeout vs RAF (requestAnimationFrame)

setTimeout 需手动控制频率&#xff0c;页面隐藏后仍会执行动画&#xff0c;更加耗费性能。 requestAnimationFrame 简称 RAF , 会在浏览器中每次刷新屏幕时调用一个函数&#xff0c;用于创建平滑的动画&#xff0c;因为它会自动适应屏幕的刷新率&#xff0c;无需手动控制频率。…

实战whisper语音识别第一天,部署服务器,可远程访问,实时语音转文字(全部代码和详细部署步骤)

Whisper是OpenAI于2022年发布的一个开源深度学习模型&#xff0c;专门用于语音识别任务。它能够将音频转换成文字&#xff0c;支持多种语言的识别&#xff0c;包括但不限于英语、中文、西班牙语等。Whisper模型的特点是它在多种不同的音频条件下&#xff08;如不同的背景噪声水…

今天聊聊新零售

一、什么是新零售&#xff1f; 2016年&#xff0c;在杭州举行的“云栖大会”上&#xff0c;马云发表了讲话&#xff0c;首次提出了“新零售”这一概念。 1.1 新零售概念 新零售&#xff0c;英文是New Retailing&#xff0c;新零售是对人货场的重构。人是消费者、销售人员、…

C++的vector类(一):vector类的常见操作

目录 前言 Vector类 遍历与初始化vector ​vector的扩容机制 vector的对象操作 find与insert 对象数组 前言 string类中还有一些内容需要注意&#xff1a; STL 的string类怎么啦&#xff1f; C面试中string类的一种正确写法 C STL string的Copy-On-Write技术 C的st…

网络编程 - 套接字

1、预备知识 1.1、理解源IP地址和目的IP地址 在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址&#xff1b; 思考: 我们光有IP地址就可以完成通信了嘛? 想象一下发qq消息的例子, 有了IP地址能够把消息发送到对方的机器上, 但是还需要有一个其他的标识来区分…