Bootstrap

19 K8S之临时/hostPath/网络存储卷

Kubernetes支持的存储卷类型中,emptyDir存储卷的生命周期与其所属的Pod对象相同,它无法脱离Pod对象的生命周期提供数据存储功能,因此通常仅用于数据缓存或临时存储

emptyDir存储卷只能用于某些特殊场景中,例如同一Pod内的多个容器间的文件共享,或作为容器数据的临时存储目录用于数据缓存系统等。

gitRepo存储卷可以看作是emptyDir存储卷的一种实际应用,使用该存储卷的Pod资源可以通过挂载目录访问指定的代码仓库中的数据。使用gitRepo存储卷的Pod资源在创建时,会首先创建一个空目录(emptyDir)并克隆(clone)一份指定的Git仓库中的数据至该目录,而后再创建容器并挂载该存储卷。

hostPath存储卷插件是将工作节点上某文件系统的目录或文件关联到Pod上的一种存储卷类型,其数据具有同工作节点生命周期一样的持久性。hostPath存储卷使用的是工作节点本地的存储空间

hostPath支持使用的节点存储类型有如下:

DirectoryOrCreate:指定的路径不存在时,自动将其创建为0755权限的空目录,属主和属组均为kubelet。

Directory:事先必须存在的目录路径。

FileOrCreate:指定的路径不存在时,自动将其创建为0644权限的空文件,属主和属组均为kubelet。File:事先必须存在的文件路径。

Socket:事先必须存在的Socket文件路径。

CharDevice:事先必须存在的字符设备文件路径。

BlockDevice:事先必须存在的块设备文件路径。

"":空字符串,默认配置,在关联hostPath存储卷之前不进行任何检查。

Kubernetes的NFS存储卷用于关联某事先存在的NFS服务器上导出的存储空间到Pod对象中以供容器使用,该类型的存储卷在Pod对象终止后仅是被卸载而非被删除。而且,NFS是文件系统级共享服务,它支持同时存在的多路挂载请求,可由多个Pod对象同时关联使用

CephFS(Ceph文件系统)是在分布式对象存储RADOS之上构建的POSIX兼容的文件系统,它致力于为各种应用程序提供多用途、高可用和高性能的文件存储。CephFS将文件元数据和文件数据分别存储在各自专用的RADOS存储池中,其中MDS通过元数据子树分区等支持高吞吐量的工作负载,而数据则由客户端直接相关的存储池直接进行读写操作,其扩展能跟随底层RADOS存储的大小进行线性扩展。Kubernetes的CephFS存储卷插件以CephFS为存储方案为Pod提供存储卷。

GlusterFS(Gluster File System)是一个开源的分布式文件系统,是水平扩展存储解决方案Gluster的核心,它具有强大的横向扩展能力,通过扩展能够支持PB级的存储容量和数千个客户端。GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据,它基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能,是另一种流行的分布式存储解决方案。