pod中的每个容器都有自己独立的文件系统
1.介绍卷
kubernetes的卷是pos的一个组成部分,因此像容器一样在pod的规范中就定义了。他们不是独立的kubernetes对象,也不能单独创建或删除。pod中的所有容器都可以使用卷,但必须先将它挂载在每个需要访问它的容器中。之前每个容器中,都可以在其文件系统的任意位置挂载卷
介绍可用的卷类型
emptyDir-用于存储临时数据的简单空目录
hostPath-用于将目录从工作节点的文件系统挂载到pod
gitRepo-通过检出Git仓库的内容来初始化卷
nfs-挂载到pod中的nfs共享卷
………
2.通过卷在容器之间共享数据
使用emptydir卷
使用Git仓库作为存储卷
gitRepo卷基本上也是一个emptydir卷,它通过克隆git仓库并在pod启动时检出特定版本来填充数据
3.访问工作节点文件系统上的文件
大多数pod应该忽略他们的主机节点,因此他们不应该访问节点系统上的任何文件。但某些系统级别的pod(切记,这些通常由deamonset管理)确实需要读取节点的文件或使用节点文件系统来访问节点设备。kubernets通过hostpath卷来实现这一点
1)介绍hostPath
hostPath卷指向节点文件系统上的特定文件或目录。是一种持久性存储。gitRepo和emptyDir卷的内容都会在pod被删除时删除,而hostpath卷的内容则不会被删除。如果删除一个pod并且下一个pod使用了指向主机相同路径的hostpath卷,则新的pod将会发现上一个pod留下的数据,但前提必须是将其调度到与第一个pod相同的节点
hostpath卷最好不要作为存储数据库的目录,因为卷的内容存储在特定节点的文件系统中,当数据库pod被重新安排在另一个节点时,会找不到数据库
2)检查使用hostpath卷的系统pod
查看系统pod命令:
kubectl get pod s - -namespace kube-system
hostpat卷通常用于尝试单节点集群中的持久化存储
提示:请记住仅当需要在节点上读取或写入系统文件时才使用hostpath,勿使用它们来持久化跨pod的数据