K8S 学习笔记(一)Volume/PV/PVC

Volume

容器和 Pod 是短暂的。
其含义是它们的生命周期可能很短,会被频繁地销毁和创建。容器销毁时,保存在容器内部文件系统中的数据都会被清除。
Volume 的生命周期独立于容器,Pod 中的容器可能被销毁和重建,但 Volume 会被保留。Volume 与 Pod 的生命周期相同,但与容器的生命周期不相关,当容器终止或者重启时, Volume 中的数据不会丢失。

volume的类型

emptyDir
一个 emptyDirVolume 是在 Pod 分配到 Node 时创建的。从它的名称就可以看出,它的初始 内容为空,并且无须指定宿主机上对应的目录文件,因为这是 Kubernetes 自动分配的 一个目录,
作用:

  • 临时空间,例如用于某些应用程序运行时所需的临时目录,且无须永久保留
  • 长时间任务的中间过程 Check:Point 的临时保存目录
  • 一个容器需要从另一个容器中获取数据的目录(多容器共享目录〉
image.png

hostPath
hostPath 为在 Pod 上挂载宿主机上的文件或目录,它通常可以用于以下几方面 。

  • 容器应用程序生成的日志文件需要永久保存时,可以使用宿主机的 高速文件系统进行存储。
  • 需要访问宿主机上 Docker引擎内部数据结构的容器应用时,可以通过定义 hostPath为 宿主机/var/lib/docker 目录,使容器内部应用可以直接访问 Docker的文件系统。
    如果 Pod 被销毁了,hostPath 对应的目录也还会被保留,从这点看,hostPath 的持久性比 emptyDir 强。不过一旦 Host 崩溃,hostPath 也就没法访问了。

注意

  • 在不同的 Node上具有相同配置的 Pod可能会因为宿主机上的目录和文件不同而导致对Volume 上目录和文件的访问结果不一致。


    image.png

NFS
使用 NFS 网 络文件系统提供的共享目录存储数据时,我们需要在系统中部署 一 个 NFS Server。 定义 NFS 类型的 Volume 的示例如下

volumes :
- name: nfs
  nfs :
  #改为你的 NFS 服务器地址
  server: nfs-server.localhost 
  path: "/"

PersistentVolume(PV)

PV 是外部存储系统中的一块存储空间,由管理员创建和维护。PV 具有持久性,生命周期独立于 Pod。

image.png

关键参数
存储能力 Capacity:
描述存储设备具备的能力,目前仅支持对存储空间的设置( storage=xx )
访问模式Access Modes:
对 PV 进行访问模式的设置,用于描述用户应用对存储资源的访问的权限。访问模式如下。

  • ReadWriteOnce (简写为 RWO ):读写权限,并且只能被单个 Node 挂载
  • ReadOnlyMany (简写为ROX):只读权限,允许被多个Node挂载。
  • ReadWriteMany (简写为 RWX): 读写权限,允许被多个 Node挂载。

回收策略 Reclaim Policy:
目前支持如下三种回收策略。

  • 保留( Retain):保留数据,需要手工处理 。
  • 回收空间(Recycle):简单清除文件的操作(例如执行 rm-rf/thevolume/*命令)。
  • 删除(Delete):与PV相连的后端存储完成 volume的删除操作(如 AWSEBS、GCEPD、Azure Disk、 OpenStack Cinder 等设备的内部 volume 清理)。

存储类别Class:
PV 可以设定其存储的类别( Class),通过 storageClassName 参数指定 一个 StorageClass 资源对象名称。

PersistentVolumeClaim(PVC)

PVC是对 PV 的申请 (Claim)。PVC 通常由普通用户创建和维护。需要为 Pod 分配存储资源时,用户可以创建一个 PVC,指明存储资源的容量大小和访问模式(比如只读)等信息,Kubernetes 会查找并提供满足条件的 PV。

image.png

PVC 就很简单了,只需要指定 PV 的容量,访问模式和 class

在Pod 中使用存储了,Pod 配置文件 pod1.yml 如下:


image.png

与使用普通 Volume 的格式类似,在 volumes 中通过 persistentVolumeClaim 指定使用 mypvc1 申请的 Volume。

回收
如果不再需要使用 PV,可用删除 PVC 回收 PV

参考:
《每天5分钟玩转 Docker 容器技术》

你可能感兴趣的:(K8S 学习笔记(一)Volume/PV/PVC)