一、背景

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

Kubernetes 中的卷有明确的寿命 —— 与封装它的 Pod 相同。所f以,卷的生命比 Pod 中的所有容器都长,当这个容器重启时数据仍然得以保存。当然,当 Pod 不再存在时,卷也将不复存在。

也许更重要的是,Kubernetes支持多种类型的卷,Pod 可以同时使用任意数量的卷。

二、卷的类型

Kubernetes 支持以下类型的卷:

  • awsElasticBlockStore azureDisk azureFile cephfs csi downwardAPI emptyDir
  • fc flocker gcePersistentDisk gitRepo glusterfs hostPath iscsi local nfs
  • persistentVolumeClaim projected portworxVolume quobyte rbd scaleIO secret
  • storageos vsphereVolume

三、emptyDir

当 Pod 被分配给节点时,首先创建 emptyDir 卷,并且只要该 Pod 在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod 中的容器可以读取和写入 emptyDir 卷中的相同文件,尽管该卷可以挂载到每个容器中的相同或不同路径上。

  • 当出于任何原因从节点中删除 Pod 时, emptyDir 中的数据将被永久删除。
  • 容器崩溃不会从节点中移除pod,因此emptyDir卷中的数据在容器崩溃时是安全的。

emptyDir 的用法有:

  • 暂存空间,例如用于基于磁盘的合并排序
  • 用作长时间计算崩溃恢复时的检查点
  • Web服务器容器提供数据时,保存内容管理器容器提取的文件
apiVersion: v1
kind: Pod
metadata:name: test-pd
spec:containers:- image: k8s.gcr.io/test-webservername: test-containervolumeMounts:- mountPath: /cachename: cache-volumevolumes:- name: cache-volumeemptyDir: {}

更新各个节点的时间

三、hostPath

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

hostPath 的用途如下:

  • 运行需要访问 Docker 内部的容器;使用 /var/lib/docker 的 hostPath
  • 在容器中运行 cAdvisor;使用 /dev/cgroups 的 hostPath
  • 允许 pod 指定给定的 hostPath 是否应该在 pod 运行之前存在,是否应该创建,以及它应该以什么形式存在

除了所需的 path 属性之外,用户还可以为 hostPath 卷指定 type

使用这种卷类型是请注意,因为:

  • 由于每个节点上的文件都不同,具有相同配置(例如从 podTemplate 创建的)的 pod 在不同节点上的行为可能会有所不同
  • 当 Kubernetes 按照计划添加资源感知调度时,将无法考虑 hostPath 使用的资源
  • 在底层主机上创建的文件或目录只能由 root 写入。您需要在特权容器中以 root 身份运行进程,或修改主机上的文件权限以便写入 hostPath 卷
apiVersion: v1
kind: Pod
metadata:name: test-pd
spec:containers:- image: k8s.gcr.io/test-webservername: test-containervolumeMounts:- mountPath: /test-pdname: test-volumevolumes:- name: test-volumehostPath:# directory location on hostpath: /data# this field is optionaltype: Directory

node节点创建要挂载的文件夹

内容来自https://study.163.com/course/courseMain.htm?courseId=1209568805

kubernetes视频教程笔记 (23)-存储-Volume相关推荐

  1. kubernetes学习笔记六:Volume

    Volume的生命周期和Pod是一致的.当Pod被销毁时,Volume也会被销毁. 创建一个volume.yaml文件:包含1个Volume和2个容器,一个镜像是centos,会输出hello到/po ...

  2. Kubernetes K8S之存储Volume详解

    K8S之存储Volume概述与说明,并详解常用Volume示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  3. Kubernetes学习笔记

    Kubernetes学习笔记 1.简介 用于自动部署.扩缩和管理容器化应用程序的开源系统,支持自动化部署.大规模可伸缩. 2.架构 2.1.Control Plane 对集群做出全局决策 Contro ...

  4. Kubernetes学习笔记(一)

    2019独角兽企业重金招聘Python工程师标准>>> Kubernetes学习笔记(一) 博客分类: Kubernetes 导语 2015年4月,传闻已久的Borg论文伴随Kube ...

  5. 51自学网-Java基础视频教程-笔记 最后修改于2020/9/9

    Java基础视频教程笔记 简介 正文 ==JVM Java Virtual Machine== 栈区 Stack Segment 堆区 Heap Segment 静态区 Data Segment 代码 ...

  6. k8s volume mysql_Kubernetes K8S之存储Volume详解

    K8S之存储Volume概述与说明,并详解常用Volume示例 1. 主机配置规划 2. Volume概述 在容器中的文件在磁盘上是临时存放的,当容器关闭时这些临时文件也会被一并清除.这给容器中运行的 ...

  7. Kubernetes学习笔记-未整理

    Kubernetes学习笔记 标签:Kubernetes 学习笔记 原文:https://github.com/wtysos11/NoteBook/blob/master/微服务/Kubernetes ...

  8. Kubernetes学习笔记【2年以前的笔记】

    Kubernetes学习笔记 知识储备 熟悉linux基础命令 熟悉docker的基本原理和操作 了解ssl证书工作原理 了解负载均衡工作原理(L4/L7) 了解分布式概念 了解域名解析原理 了解网络 ...

  9. 使用Ceph集群作为Kubernetes的动态分配持久化存储

    2019独角兽企业重金招聘Python工程师标准>>> 使用Docker快速部署Ceph集群 , 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储. Kubern ...

  10. 程序的加载和执行(三)——《x86汇编语言:从实模式到保护模式》读书笔记23

    程序的加载和执行(三)--读书笔记23 接着上次的内容说. 关于过程load_relocate_program的讲解还没有完,还差创建栈段描述符和重定位符号表. 1.分配栈空间与创建栈段描述符 462 ...

最新文章

  1. 什么场景使用mysql的存储过程_mysql存储过程的使用
  2. http status 汇总
  3. matlab 信号去直流,基于FIR滤波的ADC采样信号中直流信号的消除方法与流程
  4. 4k视频写入速度要求_为什么视频工作者需要外置硬盘?
  5. 【渝粤教育】电大中专学习指南 (3)作业 题库
  6. 【杭州云栖】飞天技术汇大视频专场:全民视频时代下的创新技术之路
  7. 70进货卖100利润是多少_3个暴利行业,进货价几十块,售卖几百块
  8. IDEA快捷键整理(最详细的)
  9. WS2811B驱动使用及使用说明
  10. OMRON_PLC_CP1H_HostLink通讯协议解析
  11. linux c实现通用hash表
  12. 【课程设计】企业职工工资管理系统 C语言版
  13. 读书笔记(一):《简单的逻辑学》
  14. fms5序列号_火枫 FMS-105分体式炉头测评
  15. 诈骗云集投诉不断,“云相亲”靠谱吗?
  16. 计算机分盘介质受写入保护,硬盘介质受写入保护怎么处理
  17. randn函数 python_Python numpy matrix randn()用法及代码示例
  18. 描边时消除锯齿SetSmoothingMode
  19. 不是运算容错,而是高温降频率,软件劣化老硬件
  20. java怎么连接sql_java怎么连接SQL Server

热门文章

  1. 这一刻只想好好做个平凡的人
  2. Windows 2003系统安全+IIS下Web与FTP的完美结合(下)
  3. 洛谷 P4392 Sound 静音问题
  4. 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表...
  5. 用三方做的豆瓣电影页面
  6. ubuntu下mysql的master-slave,双master 及A-B-C级联主从配置说明
  7. IE打开xml文件弹出下载对话框
  8. 孙鑫VC学习笔记:第十五讲 (二) 线程创建方法
  9. python_argparse简介
  10. (16)数据结构-并查集