hostPath
hostPath卷指向Node本地的文件系统,可以将Node文件系统上特定文件或目录挂载至Pod的容器中,因此其可以实现数据的持久化存储。
hostPath卷的生命周期与Pod的生命周期不一致,因此,随着Pod的删除,hostPath卷并不会随之删除,重新生成的Pod若同样挂载Node下的该路径映射的hostPath卷,则会看到之前的Pod存放在其中的数据。
因此,hostPath卷只能在单节点集群中使用,因为Pod的数据只会被保存至其所处的Node的文件系统中,在多节点集群中,其他Node中并没有该Pod存储的数据。
可以用下图来表示hostPath卷被使用时的情况:

创建hostPath卷
hostPath卷因为是将Node的文件系统中的文件或目录挂载至Pod中的容器中,因此在配置时,需要指定Node上需要挂载的文件或目录。
hostPath卷的创建分为以下两步:
定义卷:在Pod的
spec.volumes
中定义卷,并且在spec.volumes.hostPath
中定义该卷相关的配置,主要是path
,即Node上需要被挂载的文件或目录路径;挂载卷:在Pod的
spec.containers.volumeMounts
中指定挂载点和挂载的卷名;
下面举一个例子,创建一个名为mongodb
的Pod,其在内部的名为mongodb
的容器的/data/db
下挂载一个名为mongodb-data
的hostPath卷,该卷映射的是Node上的/tmp/mongodb
路径:
apiVersion: v1
kind: Pod
metadata:
name: mongodb
spec:
volumes: # 定义卷
- name: mongodb-data # (必须)卷名
hostPath: # 定义一个hostPath卷
path: /tmp/mongodb # (必须)需要挂载的Node上的文件或目录路径
containers:
- image: mongo
name: mongodb
volumeMounts: # 挂载点
- name: mongodb-data # (必须)需要挂载的卷名
mountPath: /data/db # (必须)挂载至容器的文件系统中的路径
ports:
- containerPort: 27017
protocol: TCP
Last updated
Was this helpful?