在Docker的设计实现中,容器中的数据是临时的,即当容器被销毁时,其中的数据将会丢失。如果需要持久化数据,需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中。在K8S中,当Pod重建的时候,数据是会丢失的,K8S也是通过数据卷挂载来提供Pod数据的持久化的。K8S数据卷是对Docker数据卷的扩展,K8S数据卷是Pod级别的,可以用来实现Pod中容器的文件共享。

支持的类型

EmptyDir

HostPath

GCE PersistentDisk

AWS ElasticBlock Store

NFS

iSCSI

Flocker

GlusterFS

RBD

Git Repo

Secret

PersistentVolume Claim

Downward API

本地数据卷

EmptyDir、HostPath这两种类型的数据卷,只能用于本地文件系统。本地数据卷中的数据只会存在于一台机器上,所以当Pod发生迁移的时候,数据便会丢失。该类型Volume的用途是:Pod中容器间的文件共享、共享宿主机的文件系统。

EmptyDir

如果Pod配置了EmpyDir数据卷,在Pod的生命周期内都会存在,当Pod被分配到Node上时,会在Node上创建EmptyDir数据卷,并挂载到Pod的容器中。只要Pod存在,EmpyDir数据卷都会存在(容器删除不会导致EmpyDir数据卷丟失数据),但是如果Pod的生命周期终结(Pod被删除),EmpyDir数据卷也会被删除,并且永久丢失。

EmpyDir数据卷非常适合实现Pod中容器的文件共享。Pod的设计提供了一个很好的容器组合的模型,容器之间各司其职,通过共享文件目录来完成交互,比如可以通过一个专职日志收集容器,在每个Pod中和业务容器中进行组合,来完成日志的收集和汇总。

HostPath

HostPath数据卷允许将容器宿主机上的文件系统挂载到Pod中。如果Pod需要使用宿主机上的某些文件,可以使用HostPath。

网络数据卷

K8S提供了很多类型的数据卷以集成第三方的存储系统,包括一些非常流行的分布式文件系统,也有在IaaS平台上提供的存储支持,这些存储系统都是分布式的,通过网络共享文件系统,因此我们称这一类数据卷为网络数据卷。

网络数据卷能够满足数据的持久化需求,Pod通过配置使用网络数据卷,每次Pod创建的时候都会将存储系统的远端文件目录挂载到容器中,数据卷中的数据将被永久保存,即使Pod被删除,只是除去挂载数据卷,数据卷中的数据仍然保存在存储系统中,且当新的Pod被创建时,仍是挂载同样的数据卷。网络数据卷包含以下几种:NFS、iSCISI、GlusterFS、RBD(Ceph Block Device)、Flocker、AWS Elastic Block Store、GCE Persistent Disk

信息数据卷

K8S中有一些数据卷,主要用来给容器传递配置信息,称之为信息数据卷,比如Secret(处理敏感配置信息,密码、Token等)、Downward API(通过环境变量的方式告诉容器Pod的信息)、Git Repo(将Git仓库下载到Pod中),都是将Pod的信息以文件形式保存,然后以数据卷方式挂载到容器中,容器通过读取文件获取相应的信息。

最新文章

  1. 《linux内核设计与实现》实践之模块及深入
  2. ubuntu mysql 安装和外网访问配置
  3. 彻底的放弃.net
  4. windows核心编程---第二章 字符和字符串处理
  5. PHP declare(ticks=N); 的作用
  6. 关于C#中派生类调用基类构造函数的理解
  7. 重写Collections实现自定义排序
  8. vvv
  9. ntohs, ntohl, htons,htonl的比较和详解
  10. 乐在其中设计模式(C#) - 解释器模式(Interpreter Pattern)
  11. 第一个程序python.py
  12. 转导推理——Transductive Learning
  13. java中的try-catch-finally异常处理(学习笔记)
  14. Shell 命令替换
  15. 如何创建.gitignore文件,忽略git不必要提交的文件
  16. nginx学习笔记(二)
  17. mac 下搭建 php + apache + mysql 服务器(cool)
  18. AngularJs 1.x和AngularJs2的区别
  19. Selenium 对窗口对HTML的操作举例
  20. Jmeter将HTTP request报文体中的字符串转换为大写

热门文章

  1. nyoj 题目737 合并石子(一)
  2. Java8并行流使用注意事项
  3. 分享下自己一直用的.NET SQLSERVER 封装类下自己写的DataHelper 操作类
  4. JS设置、获取DOM自定义属性
  5. [转]busybox登陆后没要求输入密码的解决办法
  6. HDU2669 Romantic
  7. cocos2d-iphone 与 UI组件
  8. Autotools Mythbuster
  9. 总结DSP28335的程序设计的方法
  10. springboot结合swagger自动生成接口文档