k8s volume 小议

k8s的volume 保留可以手动回收资源。nfs使我们可以挂载已经存储在的共享到我们的Pod中,和emptyDir不同的是,emptyDir会被删除当我们的Pod被删除的时候,但是nfs不会被删除,仅仅是解除挂载状态而已,这就意味着NFS能够允许我们提前对数据进行出来,而且这些数据可以在Pod之间相互传递,并且,nfs可以同时被多个pod挂载并进行读写。hostPath宿主机路径,就是把pod所在的宿主机之上的脱离pod中的容器名称空间的之外的宿主机的文件系统的某一目录和pod建立关联关系,在pod删除时,存储数据不会丢失。 阅读详情

1.Volume简介

我们经常会说:容器和 Pod 是短暂的。其含义是它们的生命周期可能很短,会被频繁地销毁和创建。容器销毁时,保存在容器内部文件系统中的数据都会被清除。

为了持久化保存容器的数据,可以使用 Kubernetes Volume。

Volume 的生命周期独立于容器,Pod 中的容器可能被销毁和重建,但 Volume 会被保留。

本质上,Kubernetes Volume 是一个目录,这一点与 Docker Volume 类似。当 Volume 被 mount 到 Pod,Pod 中的所有容器都可以访问这个 Volume。Kubernetes Volume 也支持多种 backend 类型,包括 emptyDir、hostPath、GCE Persistent Disk、AWS Elastic Block Store、NFS、Ceph 等。

Volume 提供了对各种 backend 的抽象,容器在使用 Volume 读写数据的时候不需要关心数据到底是存放在本地节点的文件系统中呢还是云硬盘上。对它来说,所有类型的 Volume 都只是一个目录。

2.emptyDir

emptyDir 是最基础的 Volume 类型。正如其名字所示,一个 emptyDir Volume 是 Host 上的一个空目录。
emptyDir Volume 对于容器来说是持久的,对于 Pod 则不是。当 Pod 从节点删除时,Volume 的内容也会被删除。但如果只是容器被销毁而 Pod 还在,则 Volume 不受影响。
也就是说:emptyDir Volume 的生命周期与 Pod 一致。
Pod 中的所有容器都可以共享 Volume,它们可以指定各自的 mount 路径。下面通过例子来实践 emptyDir,配置文件如下:
在这里插入图片描述
这里我们模拟了一个 producer-consumer 场景。Pod 有两个容器 producer和 consumer,它们共享一个 Volume。producer 负责往 Volume 中写数据,consumer 则是从 Volume 读取数据。

① 文件最底部 volumes 定义了一个 emptyDir 类型的 Volume shared-volume。
② producer 容器将 shared-volume mount 到 /producer_dir 目录。
③ producer 通过 echo 将数据写到文件 hello 里。
④ consumer 容器将 shared-volume mount 到 /consumer_dir 目录。
⑤ consumer 通过 cat 从文件 hello 读数据。

执行命令创建
在这里插入图片描述
kubectl logs 显示容器 consumer 成功读到了 producer 写入的数据,验证了两个容器共享 emptyDir Volume。

因为 emptyDir 是 Docker Host 文件系统里的目录,其效果相当于在k8s-node1上执行了 docker run -v /producer_dir 和 docker run -v /consumer_dir。通过 docker inspect 查看容器的详细配置信息,我们发现两个容器都 mount 了同一个目录:
在这里插入图片描述
[root@k8s-node1 ~]# docker inspect f0268ff431c0在这里插入图片描述
[root@k8s-node1 ~]# docker inspect 613bbefe294c
在这里插入图片描述
这里/var/lib/kubelet/pods/83d4f810-e517-11e8-a73d-000c299e8d28/volumes/kubernetes.io~empty-dir/shared-volume就是 emptyDir 在 Host 上的真正路径。
在这里插入图片描述
emptyDir 是 Host 上创建的临时目录,其优点是能够方便地为 Pod 中的容器提供共享存储,不需要额外的配置。但它不具备持久性,如果 Pod 不存在了,emptyDir 也就没有了。根据这个特性,emptyDir 特别适合 Pod 中的容器需要临时共享存储空间的场景,比如前面的生产者消费者用例。

3.hostPath

hostPath Volume 的作用是将 Docker Host 文件系统中已经存在的目录 mount 给 Pod 的容器。大部分应用都不会使用 hostPath Volume,因为这实际上增加了 Pod 与节点的耦合,限制了 Pod 的使用。不过那些需要访问 Kubernetes 或 Docker 内部数据(配置文件和二进制库)的应用则需要使用 hostPath。
比如 kube-apiserver 和 kube-controller-manager 就是这样的应用,通过kubectl edit --namespace=kube-system pod kube-apiserver-k8s-master
查看 kube-apiserver Pod 的配置,下面是 Volume 的相关部分:

在这里插入图片描述
这里hostpath格式如下:
在这里插入图片描述

这里定义了三个 hostPath volume k8s、certs 和 pki,分别对应 Host 目录 /etc/kubernetes、/etc/ssl/certs 和 /etc/pki。
如果 Pod 被销毁了,hostPath 对应的目录也还会被保留,从这点看,hostPath 的持久性比 emptyDir 强。不过一旦 Host 崩溃,hostPath 也就没法访问了。

4.外部存储

如果 Kubernetes 部署在诸如 AWS、GCE、Azure 等公有云上,可以直接使用云硬盘作为 Volume,下面是 AWS Elastic Block Store 的例子:
在这里插入图片描述
要在 Pod 中使用 ESB volume,必须先在 AWS 中创建,然后通过 volume-id 引用。其他云硬盘的使用方法可参考各公有云厂商的官方文档。

Kubernetes Volume 也可以使用主流的分布式存,比如 Ceph、GlusterFS 等,下面是 Ceph 的例子:
在这里插入图片描述
Ceph 文件系统的 /some/path/in/side/cephfs 目录被 mount 到容器路径 /test-ceph。

相对于 emptyDir 和 hostPath,这些 Volume 类型的最大特点就是不依赖 Kubernetes。Volume 的底层基础设施由独立的存储系统管理,与 Kubernetes 集群是分离的。数据被持久化后,即使整个 Kubernetes 崩溃也不会受损。

当然,运维这样的存储系统通常不是项简单的工作,特别是对可靠性、高可用和扩展性有较高要求时。

Volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足。

【云原生kubernetes】k8s数据存储之Volume使用详解【转】 通过之前学习了解到,k8s中Pod是最小的运行单元,Pod中运行的是一个个容器,但是容器的生命周期可能很短,被频繁地创建和销毁。当容器崩溃时文件丢失,kubelet 会重新启动容器,但容器会以干净的状态重启,之前保存在容器中的数据也会被清除;当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件;基于这些问题,k8s中就出现了“卷”这个组件来解决Kubernetes 卷(Volume) 这一抽象概念能够解决这两个问题,卷的核心是包含一些数据的目录,Pod 中的容器可以访问该目录。 阅读详情

相关推荐

MySQL for Database Administrators Student Guide - Volume I

MySQL专家认证教材:Oracle Certified Professional: MySQL 5.6 Database Administrator

Linux 基于Docker安装Mysql5.7以及Mysql8.0并使用volume将数据进行本地挂载保持数据持久化

各位同学大家好,好久没有更新博客了,今天给各位同学带来的内容是通过Docker进行Mysql5.7以及8.0的安装,为什么要写两个版本呢,是因为由于mysql8.0的安全机制的改变,安装过程与5.7有些不同,怕有的同学要使用8.0而安装不上。不过咱们今天还是以5.7安装过程为主,8.0的不同点我会为各位同学列出来,但是不会做过多的解释,好了废话不多说,我们开始进行实战吧。 1.准备工作 首先...

beyondLi71的博客 2958

2025年春科研论文写作指导(如何写好科研论文)研究生网课期末考试

希望能帮助到大家

beijieweiyu的博客 5789

k8s mysql volume_技术干货 | K8S如何引入Volumes?

Number1为什么引入Volume?当container crash的时候,kubelet将会重启它,里面之前运行的数据将会丢失,容器将以一个clean state的状态来启动。运行在pod中的containers通常会共享数据,volumes的概念就是为了解决这些问题。Number2现状kubernetes中的volume有完整的lifetime,在pod中可以脱离Container而存在。c...

weixin_33305287的博客 371

层层剥开Allegro skill--快速抓取并写入Allegro软件【呕血创作,转载注明】

Allegro skill eda pcb

qq_36492361的博客 1252

DataWorks数据安全治理最佳实践

DataWorks基于数据安全治理的常见思路,针对资产梳理、技术体系建设和运营体系建设,提供了一系列数据安全产品能力,您可通过“基础防护建设、数据安全防护措施及策略增强建设、数据安全持续运营”三个阶段在DataWorks上落地数据安全治理项目。参考本文启动数据安全治理项目前,建议您先了解DataWorks数据安全产品相关能力了解DataWorks数据安全产品能力后,您可参考如下三个阶段在DataWorks上落地数据安全治理项目。

soso1968的博客 1438

docker — volumes、MySQL数据库持久化

文章目录docker — volumes、数据库持久化一、概述二、配置步骤1. docker 安装 MySQL、持久化三、常用命令 docker — volumes、数据库持久化 一、概述 容器数据丢失情况: 每个容器每次启动都是从镜像定义开始的。 虽然容器可以创建、更新和删除文件,但当容器被移除并且所有更改都与该容器隔离时,这些更改会丢失。 示例: 如数据库相关操作中: 利用 MySQL 镜像创建了 数据库容器,并且在容器中新建了数据库,正常使用没有问题。 -> 但是当删除该容器(或者doc

pentiumCM的博客 5174

解决fetch_california_housing数据集403错误的三种实用方法

本文针对机器学习初学者加载fetch_california_housing数据集时常见的HTTPError 403: Forbidden错误,提供了三种经过实测的解决方案。详细介绍了手动下载与本地替换、修改源码下载路径以及配置网络访问策略的具体步骤,帮助用户根据自身网络环境和开发场景选择最佳方法,确保数据集顺利加载。

weixin_29074295的博客 550

k8s mysql volume_k8s的存储Volume

1.Volume简介我们经常会说:容器和 Pod 是短暂的。其含义是它们的生命周期可能很短,会被频繁地销毁和创建。容器销毁时,保存在容器内部文件系统中的数据都会被清除。为了持久化保存容器的数据,可以使用 Kubernetes Volume。Volume 的生命周期独立于容器,Pod 中的容器可能被销毁和重建,但 Volume 会被保留。本质上,Kubernetes Volume 是一个目录,这一点...

weixin_35724999的博客 231

无源低通滤波器

无源RC滤波器“滤除”不需要的信号,因为它们分离并允许仅通过其频率的正弦输入信号,最简单的是无源低通滤波器网络。在低频应用(高达100kHz)中,无源滤波器通常使用简单的RC(电阻-电容)网络构建,而高频滤波器(高于100kHz)通常由RLC(电阻-电感-电容)元件制成。无源滤波器由电阻器、电容器和电感器等无源元件组成,没有放大元件(晶体管、运算放大器等),因此没有信号增益,因此它们的输出电平始终小于输入。滤波器是根据它们允许通过它们的信号的频率范围来命名的,同时阻挡或“衰减”其余部分。

weixin_44448586的博客 1万+

Oracle EBS 寄销/VMI(2)-->采购篇

上篇有一部分设置需要建BPA后,将BPA编号与批准的供应商相关联.     本篇主要是讲的内容:一揽子采购协议-->准标采购订单-->收接入库-->子库转移-->创建冲减通知-->'按接收开票' 自动开票程序 1. PO-->采购订单à采购订单 创建一揽子采购协议,确定物料

陈显平的专栏-Oracle EBS 1万+

k8s volume mysql_k8s-Volumes(6)

1、什么是Volumns?k8s中的volumns跟docker中的volumns有点类似,都是用于挂载应用的数据。但是docker中的volumns通常只挂载在主机的目录,其生命周期无法管理。而K8S中的Volumns则独立于任何容器,其与pod有着相同的生命周期。同时pod中的容器可以共享该Volumns。因此,当容器在pod中重启的时候,数据依然会被保留。如pod被删除了,数据也会被删除。2...

weixin_39911475的博客 250

基于PCL、Open3d、Easy3d 、VTK等常见开源库的QT开发

PCL+QT开发

阁楼 2万+

6.业务架构·应用架构·数据架构实战 --- 双轮驱动的技术架构设计

第6章 双轮驱动的技术架构设计 6.1 什么是技术架构 技术架构描述:1)需要哪些技术服务;2)选择哪些技术组件来实现技术服务;3)技术服务及组件之间的交互关系。 技术架构意味着一份核准清单,强制规定了应该选择哪些厂商的哪些产品。 所谓的技术组件,可以是: 1.技术平台 2.技术框架 3.技术产品 所谓的技术服务: 1.硬件能力 2.网络能力 3.软件能力 6.2 生态变迁与技术浪潮 【生态】总述 【生态】从桌面软件,到分布式系统 【技术】小议库,框架,中间件技.

enlyhua的专栏 947

面试问题总结——关于YOLO系列(一)

自从刚开始接到的第一个面试开始,到现在为止,陆陆续续也参加了许多场,我像是一个刚从新手村出来的小白,一路的打怪升级刷经验,期间遇到了很多不会的,我都会及时记录总结。 到现在仍然清晰记得,第一次去面试的时候,当时被怼的多惨。。。 说明:本人是非科班出身,本科是机械电子工程专业,硕士期间的研究方向是机器学习和深度学习,因为我的简历上有关于YOLO的项目,所以我着重准备了YOLO系列的面试可能遇到的问题。 决定开启这个面试问题总结的系列,包括YOLO、C++的内容、OpenCV的内容和深度学习方面被提问的问题

boss-dog 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

docker mysql volume_Docker 持久化存储和数据共享_Volume

有些容器会自动产生一些数据,为了不让数据随着container的消失而消失,保证数据的安全性。例如:数据库容器,数据表的表会产生一些数据,如果我把container给删除,数据就丢失。为了保证数据不丢失,这就有了Volume的存在。Volume 是保存Docker容器生成和使用的数据的首选机制。虽然bind mounts依赖于主机的目录结构,但Volume完全由Docker管理。Volume绑...

weixin_42310271的博客 1121

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

k8s中的Volume

1. 背景     容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。 其次,当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。 Kubernetes 抽象出 Volume 对象来解决这两个问题。 2. 概念 ...

weixin_43849415的博客 7825

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Kubernetes(k8s)之Volume(卷)

apiVersion: v1 kind: Pod metadata: name: vol1 spec: containers: - image: busyboxplus name: vm1 command: ["sleep", "300"] volumeMounts: - mountPath: /cache name: cache-volume - name: vm2 image: nginx volumeMounts: .

Tuki来了 7268

Kubernetes(k8s)实战:深入详解Volume,详解k8s文件同步存储

Volume官网:https://kubernetes.io/docs/concepts/storage/volumes/容器中的磁盘上文件是短暂的,这给在容器中运行的重要应用程序带来了一些问题。首先,当一个容器崩溃时,kubelet会重启它,但是文件会丢失——容器以干净的状态开始。其次,当在一个Pod中一起运行容器时,通常需要在这些容器之间共享文件。Kubernetes的Volume 抽象解决了这两个问题。我们发现,使用volume形式,会与宿主机共享目录,里面数据内容是一致的。

秃了也弱了 1799

【k8s】8、数据存储

第八章 数据存储 ​ 在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。 ​ Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命容

努力充实,远方可期 948

K8s(12)——存储之volumes

在K8S中,volume是kubernetes Pod中多个容器访问的共享目录。volume被定义在pod上,被这个pod的多个容器挂载到相同或不同的路径下。volume的生命周期与pod的生命周期相同,pod内的容器停止和重启时一般不会影响volume中的数据。所以一般volume被用于持久化pod产生的数据。Pod 中的每个容器必须独立地指定每个卷的挂载位置。k8s支持的常见Volume类型如下: 基本存储:EmptyDir、HostPath、NFS 高级存储emptyDir卷。

m0_46652469的博客 1414

K8S Volume

从实际使用上讲使用nfs作为存储卷并不是一个好的方式,使用中会遇到千奇百怪的问题,kubernetes官方也不太推荐生产使用nfs提供存储卷,但是实际上有时候无可奈何的要去用,建议数据重要的服务使用分布式存储如ceph或者通过云厂商提供的csi挂载云盘作为存储卷,再不行就使用local pv.史上最全之K8s使用nfs作为存储卷的五种方式 · kubernetes卷 | Kubernetes。

k8seasz的博客 578

k8s(5)-kubernetes存储系统Volume和PV

一、Volume 我们经常会说:容器和 Pod 是短暂的。其含义是它们的生命周期可能很短,会被频繁地销毁和创建。容器销毁时,保存在容器内部文件系统中的数据都会被清除。 1、当容器崩溃 时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。 2、在 Pod 中同时运行多个容器时,这些容器之间通常需要共享文件。 Kubernetes中的Volume抽象就很好的解决了 这些问题. 为了持久化保存容器的数据,可以使用 Kubernetes Volume。...

黄规速博客:学如逆水行舟,不进则退 1155

k8s - Volume 简介和HostPath的使用

官方定义:hostPath 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中。虽然这不是大多数 Pod 需要的,但是它为一些应用提供了强大的逃生舱。简单来讲就是让k8s node 的目录or 文件map在你的POD 容器里至于为什么上面提到的逃生舱, 是因为假如你的POD 崩溃了or 被shutdown, 我们仍然可以在node对应的path上找到我们想要的数据(前提是把相应的数据output 到hostpath)但是 官方并不推荐使用hostpath 把数据输出到node上。

nvd11的专栏 1943

Kubernetes(k8s)的Volume数据存储介绍和各种基本储存类型(EmptyDir、HostPath、NFS)的使用

目录1. 概述2. EmptyDir2.1 概述2.2 EmptyDir使用实战2.2.1 创建pod2.2.2 查看pod2.2.3 访问Pod中的Nginx:2.3.4 查看busybox容器的标准输出3. HostPath3.1 概述3.2 HostPath使用实战3.2.1 创建pod3.2.2 查看pod3.2.3 访问Pod中的Nginx:3.3.4 查看Pod所在node节点的日志4. NFS4.1 概述4.2 搭建NFS服务器4.3 NFS使用实战4.3.1 创建pod4.3.2 查看pod

Bulut0907 2407

k8s教程(Volume篇)-PVC详解

K8S PVC详解

阿甘兄 4729
上一篇: k8sg关于Secret的说明
下一篇: k8s argo 技术资料汇总
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值