Kubernetes集群Pod中运行的容器实例绑定的资源包括计算、内存、网络以及存储,本文主要描述Kubernetes存储体系的使用方式,Kubernetes存储对象需要解决的问题主要包括在Pod重启过程中原始数据不会丢失、运行在Pod中多个容器实例可以共享地使用存储对象。
kubectl create configmap <map-name> <data-source> 使用kubectl命令行工具创建一个configMap的存储对象 |
如上所示,运行在Pod中的容器实例mount了一个configMap存储对象config-vol,其挂载在Pod中的路径是/etc/config
如上所示,运行在Pod中的容器实例mount了一个emptyDir存储对象cache-volume,emptyDir存储对象是在Pod运行成功后创建的空目录存储对象,当Pod从服务器节点Node中被删除的时候,emptyDir存储对象才会被删除,存储在其中的数据也被删除
gcloud compute disks create --size=500GB --zone=us-central1-a my-data-disk 创建一个GCE类型的存储对象,GCE是google cloud提供的云原生存储对象 |
如上所示,在地区us-central1-a中创建一个GCE类型的持久化存储对象,挂载在test-pd的Pod中
gcloud compute disks create --size=500GB my-data-disk --region us-central1 --replica-zones us-central1-a,us-central1-b 在地域us-central1的两个可用地区us-central1-a,us-central1-b,创建一个共享的GCE类型的存储对象 |
如上所示,创建一个PersistentVolume类型的持久化存储对象,两个可用地区us-central1-a,us-central1-b可共享使用
如上所示,在Pod挂载一个hostPath类型的存储对象,将主机文件系统的/data目录挂载到Pod的目录/test-pd中
如上所示,在Pod挂载两个hostPath的存储对象,分别将主机文件系统的目录或者文件挂载到Pod中
如上所示,创建一个PersistentVolume类型的持久化的存储对象,挂载本地主机系统的磁盘或者分区或者目录,设置nodeAffinity,由Kubernetes集群调度到指定服务器节点node中
如上所示,在Pod中挂载一个nfs类型的存储对象,nfs是共享式的互联网文件系统,可在Kubernetes集群内所有的Pod中共享存储,当Pod被删除的时候,内容也不会被删除
如上所示,创建一个持久化的存储对象site-data,同一个Pod内运行多个容器实例,在每个容器实例中挂载一个site-data的子目录
如上所示,创建一个主机存储对象workdir1,使用Kubernetes集群环境变量pod的名称作为子目录,标识不同应用的日志文件