k8s–基础–18.3–存储卷–类型–hostPath
1、介绍
- hostPath存储卷 为Pod数挂载在宿主机上的目录或文件上。
- hostPath存储卷 使得容器可以使用宿主机的高速文件系统进行存储
- hostPath存储卷 是节点级别的存储卷,数据存储在节点的文件或者目录上
1.1、注意
- 在pod被删除,hostPath存储卷还是存在的,不会被删除。
- 假设hostPath存储卷数据在A节点上。pod被删除,新启动的同一个pod分配到A节点上,那么pod显示的数据,还是以前被删除pod的数据。
2、创建有存储卷的pod
如果原先pod-nginx-volume.yaml已经被使用,需要先删除
kubectl delete -f /root/test2/pod-nginx-volume.yaml
2.1、查看字段定义
# 其他字段不懂通过explain来查看
kubectl explain pods.spec.volumes.hostPath
2.2、创建脚本
vi /root/test2/pod-nginx-volume.yaml
内容
apiVersion: v1
kind: Pod
metadata:
# pod的名称
name: pod-nginx-volume
spec:
containers:
- name: c-nginx
image: nginx:1.14
# 容器挂载存储卷
volumeMounts:
# 容器存储卷目录
- mountPath: /usr/share/nginx/html
# 引入名称为nginx-volume的存储定义
name: nginx-volume
# 设置存储卷定义
volumes:
# 存储卷类型
- hostPath:
# 节点的目录
path: /data1
# 目录不存就创建目录
type: DirectoryOrCreate
# 存储卷名称
name: nginx-volume
2.3、执行
kubectl apply -f /root/test2/pod-nginx-volume.yaml
3、验证
3.1、查看pod在哪个节点上
kubectl get pods pod-nginx-volume -o wide
- 可以看到pod在node1上。
- 登录到node1上,查看是否有/data1这个目录,如果有,属于正常创建。
3.2、查看 node1节点 /data1是否存在
在/data1创建a.txt文件,看容器中是否存在
touch a.txt
3.3、查看容器 是否存在a.txt
kubectl -it exec pod-nginx-volume -c c-nginx -- /bin/sh
cd /usr/share/nginx/html
# 创建b.txt文件,查看节点上是否存在
touch b.txt
3.4、查看 node1节点 是否存在b.txt
4、hostPath 的tpye字段
kubectl explain pods.spec.volumes.hostPath.type