问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

kubernetes(十一) 数据存储(挂载卷管理)

发布网友 发布时间:2022-04-22 14:21

我来回答

1个回答

热心网友 时间:2023-10-18 03:29

在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。

Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命容器不与Pod中单个容器的生命周期相关,当容器终止或者重启时,Volume中的数据也不会丢失。

kubernetes的Volume支持多种类型,比较常见的有下面几个:

EmptyDir是最基础的Volume类型,一个EmptyDir就是Host上的一个空目录。

EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时, EmptyDir中的数据也会被永久删除。 EmptyDir用途如下:

接下来,通过一个容器之间文件共享的案例来使用一下EmptyDir。

在一个Pod中准备两个容器nginx和busybox,然后声明一个Volume分别挂在到两个容器的目录中,然后nginx容器负责向Volume中写日志,busybox中通过命令将日志内容读到控制台。

创建一个volume-emptydir.yaml

EmptyDir中数据不会被持久化,它会随着Pod的结束而销毁,如果想简单的将数据持久化到主机中,可以选择HostPath。

HostPath就是将Node主机中一个实际目录挂在到Pod中,以供容器使用,这样的设计就可以保证Pod销毁了,但是数据依据可以存在于Node主机上。

创建一个volume-hostpath.yaml:

HostPath可以解决数据持久化的问题,但是一旦Node节点故障了,Pod如果转移到了别的节点,又会出现问题了,此时需要准备单独的网络存储系统,比较常用的用NFS、CIFS。

NFS是一个网络文件存储系统,可以搭建一台NFS服务器,然后将Pod中的存储直接连接到NFS系统上,这样的话,无论Pod在节点上怎么转移,只要Node跟NFS的对接没问题,数据就可以成功访问。

1)首先要准备nfs的服务器,这里为了简单,直接是master节点做nfs服务器

2)接下来,要在的每个node节点上都安装下nfs,这样的目的是为了node节点可以驱动nfs设备

3)接下来,就可以编写pod的配置文件了,创建volume-nfs.yaml

4)最后,运行下pod,观察结果

前面已经学习了使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用, kubernetes引入PV和PVC两种资源对象。

PV(Persistent Volume)是持久化卷的意思,是对底层的共享存储的一种抽象。一般情况下PV由kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。

PVC(Persistent Volume Claim)是持久卷声明的意思,是用户对于存储需求的一种声明。换句话说,PVC其实就是用户向kubernetes系统发出的一种资源需求申请。

使用了PV和PVC之后,工作可以得到进一步的细分:

PV是存储资源的抽象,下面是资源清单文件:

PV 的关键配置参数说明:

实验
使用NFS作为存储,来演示PV的使用,创建3个PV,对应NFS中的3个暴露的路径。
1.准备NFS环境

2.创建pv.yaml

PVC是资源的申请,用来声明对存储空间、访问模式、存储类别需求信息。下面是资源清单文件:

PVC 的关键配置参数说明:

实验
1.创建pvc.yaml,申请pv

2.创建pods.yaml, 使用pv

PVC和PV是一一对应的,PV和PVC之间的相互作用遵循以下生命周期:

ConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。

创建configmap.yaml,内容如下:

接下来,使用此配置文件创建configmap

接下来创建一个pod-configmap.yaml,将上面创建的configmap挂载进去

在kubernetes中,还存在一种和ConfigMap非常类似的对象,称为Secret对象。它主要用于存储敏感信息,例如密码、秘钥、证书等等。

1.首先使用base64对数据进行编码

2.接下来编写secret.yaml,并创建Secret

3.创建pod-secret.yaml,将上面创建的secret挂载进去:

至此,已经实现了利用secret实现了信息的编码。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山东沃尔德集团集团所辖公司介绍 齐鲁银行无忧贷和市民贷哪个好 什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... PVC直接重启pod数据丢失 A1634是什么版本 泰康人寿尊享D款医疗险和e生保对比 昨天下午工行跨行转账到建行,现在还没有到账,请问大概什么时候能到 泰康人寿健康尊享医疗保险计划 2019泰康人寿尊享医疗保险 泰康人寿尊享医疗保险 泰康健康尊享医疗保险怎么不能续费了 泰康健康尊享医疗保险是什么险种 泰康尊享b+的优缺点? 如何在华为手机上搜索ADYSS 电脑黑屏,只剩回收站 封号微信还可以投诉吗 电动车头盔有哪些? 电脑开机后黑屏只显示回收站 赛车头盔双认证好还是单认证 电脑黑屏只出现回收站怎么退出呢? “头盔病”是什么样的? 微信投诉能封号吗 windows7黑屏只显示一个回收站怎么回事?显示引用了一个不可用的位置 docker 重启 mysql也会丢失吗 有哪些问题使用docker解决不掉? Linux修改docker镜像和容器的默认存储位置 重启docker容器,open配置文件被重置? docker容器里重启nginx报错出现日志文件没有 Docker问题排查-异常断电导致Docker启动卡住 docker关闭数据库容器后数据库会停止吗 阿里云初始化磁盘如何恢复docker服务和数据 红宝丽股票(红宝丽股票历史交易数据) 红宝丽股为什么涨?红宝丽股公布年报股票会涨吗?红宝丽这支股票可以投资吗? 红宝丽股票是做什么的 红宝丽股票是做什么的 红宝丽近期为什么会大跌?红宝丽股票2021年一季报?红宝丽为何股票这么低? 红宝丽适合长期持有?预测2021红宝丽业绩?红宝丽大跌 新浪新闻? 红宝丽股票(红宝丽股票最新分析) 404 Not Found 红宝丽股下周一会涨吗?红宝丽股票明天最新走势?红宝丽股价是多少钱? 红宝丽股票未来目标价002165?2021年红宝丽三季报盈利?红宝丽2021年市值? 红宝丽股票可以长久持有吗?红宝丽业绩预告是利好还是利空?红宝丽属于什么板块的股? 红宝最后嫁给蓝歌了吗