emptyDir

Pod ...
spec:
	volumes:
	- name: html
		emptyDir: {}  # emptyDir 还支持使用如下参数
			# medium: default  # 存储介质类型, default 默认使用节点所在的存储, Memory 使用内存
			# sizeLimit: 10M  # 存储卷的空间限额, 默认为nil, 表示不限制, 在指定 Memory 的时候必须要设置值

同一个Pod内共享 emptyDir

gitRepo

gitRepo 和 emptyDir 有点像, 使用gitRepo存储卷的Pod资源在创建时,会首先创建一个空目录(emptyDir)并克隆(clone)一份指定的Git仓库中的数据至该目录,而后再创建容器并挂载该存储卷。

<aside> 💡 k8s 1.12 之后被废弃

</aside>

hostPath

hostPath类型的存储卷是指将工作节点上某文件系统的目录或文件挂载于Pod中的一种存储卷,它可独立于Pod资源的生命周期,因而具有持久性。但它是工作节点本地的存储空间,仅适用于特定情况下的存储卷使用需求,例如,将工作节点上的文件系统关联为Pod的存储卷,从而使得容器访问节点文件系统上的数据。这一点在运行有管理任务的系统级Pod资源需要访问节点上的文件时尤为有用。

Pod...
spec:
	volumes:
	- name: varlog
		hostPath:
			path: /var/log  # 指定Node节点上的路径

NFS存储卷

Pod...
spec:
	volumes:
	- name: redisdata
		nfs:
			server: nfs.ilinux.io  # NFS服务器的IP地址或主机名
			path: /data/redis  # NFS服务器共享的文件系统路径
			readOnly: false  # 是否以只读方式挂载

RBD存储卷

Ceph是一个专注于分布式的、弹性可扩展的、高可靠的、性能优异的存储系统平台,同时支持提供块设备、文件系统和REST三种存储接口。它是一个高度可配置的系统,并提供了一个命令行界面用于监视和控制其存储集群。Ceph还包含鉴证和授权功能,可兼容多种存储网关接口,如OpenStack Swift和Amazon S3。Kubernetes也支持通过RBD卷类型使用Ceph存储系统为Pod提供存储卷。

Pod...
spec:
	volumes:
	- name: redis-rbd-vol
		rbd:
			monitors:  # Ceph存储监视器, 逗号分割的字符串列表
			- '172.16.0.56:6789'
			- '172.16.0.57:6789'
			- '172.16.0.58:6789'
			pool: kube  # 存储次名称
			image: redis  # image 名称
			fsType: ext4  # 要挂载的存储卷的文件系统类型 ext4, xfs, ntfs等
			readOnly: false
			user: admin
			screatRef:  # 使用的保存有认证信息的Secret对象
				name: ceph-secret

GlusterFS 存储卷

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

Pod...
spec:
	volumes:
	- name: redisdata
		glusterfs:
			endpoints: glusterfs-endpoints
			path: kube-redis  # 用到的GlusterFS集群的卷路径
			readOnly: false

用于访问Gluster集群的相关节点信息要事先保存于某特定的Endpoints资源中,例如上面示例中调用的glusterfs-endpoints, 如下所示

apiVersion: v1
kind: Endpoints
metadata:
	name: glusterfs-endpoints
subsets:
	- addresses:
		- ip: gfs01.ilinuxio
			ports:
			- port: 24007
				name: glusterd
		- ip: gfs02.ilinuxio
			ports:
			- port: 24007
				name: glusterd
		- ip: gfs03.ilinuxio
			ports:
			- port: 24007
				name: glusterd