3.10. 使用 hostPath 的持久性存储
OpenShift Container Platform 集群中的 hostPath 卷将主机节点的文件系统中的文件或目录挂载到 Pod 中。大多数 Pod 都不需要 hostPath 卷,但是如果应用程序需要它,它会提供一个快速的测试选项。
集群管理员必须将 Pod 配置为以特权方式运行。这样可访问同一节点上的 Pod。
3.10.1. 概述
OpenShift Container Platform 支持在单节点集群中使用 hostPath 挂载用于开发和测试目的。
在用于生产环境的集群中,不要使用 hostPath。集群管理员会置备网络资源,如 GCE Persistent Disk 卷、NFS 共享或 Amazon EBS 卷。网络资源支持使用 StorageClasses 设置动态置备。
hostPath 卷必须静态置备 。
3.10.2. 静态置备 hostPath 卷
使用 hostPath 卷的 Pod 必须通过手动(静态)置备来引用。
流程
定义持久性卷(PV)的名称。使用 PersistentVolume 对象定义创建一个
pv.yaml
文件:apiVersion: v1 kind: PersistentVolume metadata: name: task-pv-volume 1 labels: type: local spec: storageClassName: manual 2 capacity: storage: 5Gi accessModes: - ReadWriteOnce 3 persistentVolumeReclaimPolicy: Retain hostPath: path: "/mnt/data" 4
从该文件创建 PV:
$ oc create -f pv.yaml
定义持久性卷声明(PVC)。创建包括 PVC 对象定义的一个
pv.yaml
文件:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: task-pvc-volume spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: manual
从文件创建 PVC:
$ oc create -f pvc.yaml
3.10.3. 在特权 Pod 中挂载 hostPath 共享
创建 PersistentVolumeClaim 后,应用程序就可以使用它。以下示例演示了在 Pod 中挂载此共享。
先决条件
- 存在的 PersistentVolumeClaim 被映射到底层的 hostPath 共享。
流程
创建可挂载现有 PersistentVolumeClaim 的特权 Pod:
apiVersion: v1 kind: Pod metadata: name: pod-name 1 spec: containers: ... securityContext: privileged: true 2 volumeMounts: - mountPath: /data 3 name: hostpath-privileged ... securityContext: {} volumes: - name: hostpath-privileged persistentVolumeClaim: claimName: task-pvc-volume 4