Volume
Pod里面的数据是不持久的,当Pod被删掉后,Pod里面的数据也就不复存在,所以我们需要使用Volume来持久化Pod里面的数据。
常用的Volume的类型有HostPath
、EmptyDir
、NFS
、RBD
等等。接下来,我们来介绍一下这四种Volume
HostPath
HostPath就是把主机的一个目录挂载到Pod中,如下:
EmptyDir
EmptyDir会在宿主机上创建一个临时目录,然后把该目录挂载到Pod中,当Pod被删除时,宿主机上的该目录也会被删掉
NFS
NFS会先把远程文件系统挂载到本地的一个目录,然后再把本地目录挂载到Pod中。如下一个Pod
当创建好该Pod后,我们执行命令df -hT
,会发现如下一条,/app/nfs
是nfs-server共享的根目录。kubelet会先把远程文件系统挂载到本地的目录/var/lib/kubelet/pods/8636d572-a165-11e9-9593-000c29a3131e/volumes/kubernetes.io~nfs/volume1
,然后再把该目录挂载到Pod中
RBD
kubelet会先把RBD块挂成本地的一个磁盘,然后把磁盘格式化为文件系统,及挂载到本地的一个目录,最后再把这个目录挂载到Pod中。创建了如上的Pod后,执行命令lsblk
可以看到多了一个磁盘rbd0,它的挂载目录为/var/lib/kubelet/pods/3c18348a-a172-11e9-9593-000c29a3131e/volumes/kubernetes.io~rbd/volume1
注意:在ceph中创建kube/image1
的命令为rbd create kube/image1 --size 1024 --image-format 2 --image-feature layering
,一定要加上--image-feature layering
,否则把rbd挂载成本地磁盘的过程会报错。
Last updated
Was this helpful?