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是无法被成功创建的

    Loading

    Facebook评论