CKA [Storage] – hostPath的讲解
hostPath是Persistent Volume, 它挂载的是宿主机的目录或文件,所以数据会保留在宿主机上,不随 Pod 消失。
- hostPath的缺点是,数据只是存在宿主机上,如果你有2台worker node的话,那么数据将无法跨主机同步 , 如果想要在固定的worker node部署的话就需要使用Node Affinity
- 如果你没有宿主机的密码有想要进入到宿主机,那么你也可以使用hostPath映射整个root path进入container内,那么你就能够通过container读取到宿主机内所有的文件。

Hostpath 的官方文档:https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
实践测试
1. 创建pod资源 , 这个pod是/data 就是跟宿主机的/Users/ngjinkiat/Desktop 做绑定的
kubectl apply -y pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: demopod
spec:
containers:
- image: busybox
name: container1
command: ["sleep","36000"]
volumeMounts:
- name: shared-volume
mountPath: /data
- image: busybox
name: container2
command: ["sleep","36000"]
volumeMounts:
- name: shared-volume
mountPath: /data
volumes:
- name: shared-volume
hostPath:
path: /Users/ngjinkiat/Desktop # 宿主机的目录
type: "" # HostPathType 种类
2. 当创建了pod就进入pod创建test.txt
【进入pod中的container】
kubectl exec -it demopod -c container1 -- sh
【创建test.txt】
touch /data/test.txt
3. 查看宿主机是否也有文件被创建,必须注意由于我使用的是minikube,所以pod的宿主机其实就是minikube的pod内,而不是实际的宿主机。

- 以下是从官方文档的截图,你可以设置HostPathType。
- 举例如果你设置type是Directory的话,那么就必须确保宿主机存在相对应的path否则pod是无法被成功创建的

Facebook评论