K8S-存储-Volume

news2024/11/19 1:20:58

问题

容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃
时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次,在
Pod 中同时运行多个容器时,这些容器之间通常需要共享文件。Kubernetes 中的 Volume 抽象就很好的解决了
这些问题

背景

Kubernetes 中的卷有明确的寿命 —— 与封装它的 Pod 相同。所以,卷的生命比 Pod 中的所有容器都长,当这
个容器重启时数据仍然得以保存。当然,当 Pod 不再存在时,卷也将不复存在。也许更重要的是,Kubernetes
支持多种类型的卷,Pod 可以同时使用任意数量的卷
在这里插入图片描述
卷的类型:
这里主要介绍两种:emptyDir、hostpath.

emptyDir

当pod被分配节点时,首先创建emptyDir卷,并且只要该Pod在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod中的容器可以读写和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每个容器中相同或不同的路径上。当处于任何原因从节点中删除Pod时,emptyDir中的数据将被永久删除
注意:容器崩溃不会从节点中移除,因此emptyDir卷中的数据在容器崩溃时时安全的。

emptyDir的用法有:

  • 暂存空间,例如用基于磁盘的合作排序
  • 用作长时间计算崩溃恢复时的检查点
  • Web服务容器提供数据时,保存内容管理容器提取的文件

EmptyDir示例:
启动一个pod,里面有两个容器并且在不同的目录都挂载emptyDir:

[root@apiserver volume]# cat em.yaml 
apiVersion: v1
kind: Pod
metadata:
 name: volume-empty
spec:
 containers:
 - image: nginx
   name: volume-empty
   volumeMounts:
   - mountPath: /cache
     name: cache-volume
 - image: redis
   name: volume-empty1
   volumeMounts:
   - mountPath: /test
     name: cache-volume
 volumes:
  - name: cache-volume
    emptyDir: {}
#查看第一个容器挂载点
root@volume-empty:/cache# date > index.html 
root@volume-empty:/cache# cat index.html 
Sun May  3 09:24:48 UTC 2020
#查看第二个容器
root@volume-empty:/test# date >> index.html
root@volume-empty:/test# cat index.html 
Sun May  3 09:24:48 UTC 2020
Sun May  3 09:25:06 UTC 2020

HostPath:

hostpath卷将主机节点的文件、系统中的文件或目录中挂载到集群中.

hostpath的用途:

  • 运行需要访问的Docker内部的容器;使用/var/lib/docker的hostpath

  • 在容器中运行cAdisor;使用/dev/cgroups的hostpath
    在这里插入图片描述
    使用这种卷类型是请注意,因为:

  • 由于每个节点上的文件都不同,具有相同配置(例如从 podTemplate 创建的)的 pod 在不同节点上的行为
    可能会有所不同

  • 当 Kubernetes 按照计划添加资源感知调度时,将无法考虑 hostPath 使用的资源

  • 在底层主机上创建的文件或目录只能由 root 写入。您需要在特权容器中以 root 身份运行进程,或修改主机
    上的文件权限以便写入 hostPath

[root@apiserver volume]# cat volume.yaml 
apiVersion: v1
kind: Pod
metadata:
 name: volume-test
spec:
 containers:
 - image: nginx
   name: volume-test
   volumeMounts:
   - mountPath: /test
     name: test-volume
 volumes:
  - name: test-volume
    hostPath:
      path: /data
      type: Directory

我的node1节点有一个文件,pod running后进入容器查看容器/test目录下是否有此文件:

[root@apiserver volume]# kubectl exec -it volume-test bash
root@volume-test:/# cd /test/
root@volume-test:/test# ls
mariadb-galera

有mariadb-galera此文件,表示挂在成功.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA 控制台日志中文乱码解决方案

老白新学JAVA,初用IDEA,控制台打印中文总是乱码,网上找了好多解决方法,都不好用,下面记录解决过程。 1.修改idea64.exe.vmoptions ,打开最后一行增加如下代码 idea快捷方式右键->属性->打开文件所有位置&#x…

Redis 性能优化 —— 内存碎片

文章目录一、内存碎片场景描述二、内存碎片概念解析三、内存碎片产生原因四、内存碎片如何判断五、内存碎片解决方案六、内存碎片扩展技能一、内存碎片场景描述 作为内存数据库,内存空间的大小对于 Redis 来说是至关重要的。内存越多意味着存储的数据也会越多&#…

多线程下对象的析构问题

多线程遇上对象析构是个很麻烦的问题,这里我用一个多线程的单例模式去演示一下对象析构的问题 懒汉模式,加锁,线程安全 懒汉模式:需要的时候new一个对象,不需要的时候delete (线程安全的懒汉)单…

服务注册配置中心Nacos

文章目录一. 前言二. 下载安装1. 下载安装包2. Windows环境安装3. Linux环境安装1. 单击模式启动2. 集群模式启动3. 远程web控制4. 注册为系统服务三. 基本使用1. 添加依赖2. 服务注册3. 配置实例集群属性4. 实例权重负载均衡5. 环境隔离6. 临时实例与非临时实例四. Nacos配置管…

Gradle学习笔记之文件操作

文章目录本地文件文件集合文件树文件拷贝归档文件Gradle中的文件操作方式有五种:本地文件、文件集合、文件树、文件拷贝和归档文件。 本地文件 比较简单,API跟java中的完全一致: task("test_file") {doFirst {def f1 file(&quo…

史上最强,这份在各大平台获百万推荐的Java核心手册实至名归

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而,面试人群众多,技术市场却相对冷淡,…

再学C语言13:字符串(4)——scanf函数

一、scanf函数的使用 scanf函数功能:把输入的字符串转换成各种形式(整数、浮点数、字符、字符串) scanf函数是printf函数的逆操作 scanf函数与printf函数一样使用控制字符串和参数列表 控制字符串指出输入将被转换成的格式 主要区别在参…

Qt实现表格控件

一、概述 最近在研究QTableView支持多级表头的事情,百度了下网上资料还是挺多的。实现的方式总的来说有2种,效果都还不错,最主要是搞懂其中的原理,做到以不变应万变。 实现多级表头的方式有以下两种方案 行表头和列表头都是用一…

网络空间安全——利用 CVE-2017-0213 提权

利用 CVE-2017-0213 提权 VE-2017-0213 是一个比较冷门的COM 类型混淆 (Type Confusion)漏洞。巧妙的利用该漏洞,可以实现本地的提权。该漏洞由著名的Google Project zero 发现。 下面就简单演示一下利用CVE-2017-0213漏洞简单提权, 首先下载CVE-2017…

【环境搭建】RocketMQ集群搭建

前置条件及效果图 条件: 两台服务器,个人是两台腾讯云服务器(其中嫖的朋友一个); 版本: rocketmq-version:4.4.0rocketmq-console(mq控制台)Java:1.8maven:3.6.3 集群模式选择: 单master 这种方式风险…

【Django】第三课 基于Django超市订单管理系统开发

概念 本文在上一文之上,针对管理员,经理,普通员工身份的用户操作供应商管理模块功能。 功能实现 供应商管理模块属于业务功能,这里管理员不具备操作权限,而经理具备与供应商之间谈合作的实际需要,因此经…

Linux | 进程理解,fork | 进程地址空间

文章目录冯诺依曼体系结构的理解为什么要有内存的存在?操作系统的管理进程的理解系统调用接口进程的查看fork进程状态Linux进程具体的状态孤儿进程总结进程优先级怎样修改优先级?进程其他概念进程抢占进程地址空间利用代码验证地址区域验证堆区和栈区的增…

python3GUI--音乐播放器(精简版)By:PyQt5(附下载地址)

文章目录一.前言二.预览1.主界面2.歌单页3.歌词页4.播放列表5.mini6.设置三.心得1.解耦2.体验优化3.歌词显示四.总结一.前言 传送门: 1.python3GUI–打造一款音乐播放器By:PyQt5(附下载地址&am…

LD_PRELOAD劫持

在前面UUCTF的uploadinject题,遇到了 LD_PRELOAD劫持,之前没遇见过,刚好借此机会学一学。不能小瞧这个变量,它甚至可以弹shell,绕过disable_functions,非常危险。下面来介绍一下这个变量,以及怎…

XDocReport使用入门

XDocReport 简介 XDocReport是GitHub上根据麻省理工学院许可证开源的Wrod导出框架。XDocReport可以根据ODT、Doc、Docx文档模板通过模板引擎语法(Freemarker、Velocity)转换为另外一种格式文档(Doc、Docx、XHTML、PDF)。 XDocR…

防沉迷管理系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 1、用户模块 1.1注册:用户通过注册生产账号,并在数据库存储数据 1.2登录:用户登录后…

k8s学习-CKA真题-k8s升级(kubeadm、kubelet、kubectl等)

目录题目解析命令准备工作升级组件升级kubectl、kubelet收尾结果killer 模拟环境题目解析解题参考题目 解析 结合博主当前环境,调整后题目为: 现有的 Kubernetes 集权正在运行的版本是 1.23.6,仅将主节点上的所有 kubernetes 控制面板和组件…

【语音处理】基于加权压力匹配方法(WPMM)的声音系统研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

【小程序】案例 - 本地生活(列表页面)

1. 演示页面效果以及主要功能 页面导航并传参 上拉触底时加载下一页数据 下拉刷新列表数据 2. 列表页面的 API 接口 以分页的形式,加载指定分类下商铺列表的数据: 接口地址 https://www.escook.cn/categories/:cate_id/shops URL 地址中的 :cate…

博泰应宜伦:智能汽车上攻时刻,需要“国家级”平台登场

作者 | 张祥威 编辑 | 王博汽车智能化转型的道路上,有个问题可能并非杞人忧天,而是值得整个行业警醒的。那就是: 中国的智能汽车发展,是否会被国外“卡脖子”? 卡脖子的担忧,其实也可以理解为,中…