如何更改持久卷以使用主机上的路径?

时间:2018-12-03 11:43:46

标签: openshift openshift-origin


我已经完全通过Web控制台创建了“持久卷声明”,并将其附加到Web服务器的/ www / log安装路径中。 我看到Persistent Volume Claim的工作方式就像重新启动Pod一样,保留了日志。

但是,我想在主机上使用本地安装作为永久卷,以便可以轻松跟踪日志。 在OKD Web控制台上,您只能创建新的PVC,但不能创建指向本地安装的PV。 您能否建议如何更新自动拾取的持久卷以使用本地挂载(例如/ mnt / data)?

1 个答案:

答案 0 :(得分:1)

可以通过使用OpenShift中通过命令行运行的 hostPath 选项 Persistent Volume YAML 来解决此问题。但是,如果您想走这条路的话,有些事情要提防。

  1. 在路径/mnt/data中创建的所有文件和目录只能由 root 用户写入。在这种情况下,您必须运行特权容器或为hostPath提供适当的权限以使其可写。

  2. 以下 YAML 在持久卷中具有 hostPath 选项的语法。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: test-pv
    spec:
      capacity:
        storage: 1Mi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      hostPath:
        path: /mnt/data
    
  3. 运行以下命令以在特定项目中创建持久卷。 oc create -f test-pv.yaml -n <project>

  4. 一旦您有了持久卷,就创建一个持久卷声明,该声明绑定到上面创建的持久卷。

  5. 如果要将hostPath直接安装在Pod上,请确保在部署配置中使用节点选择器,因为Pod是临时并且可以在任何时间点重新创建它们。如果将具有hostPath的Pod安排在可能没有/mnt/data路径的另一台主机上,则可能导致CrashLoopBackOff错误。

  6. 下面的 YAML Pod hostPath 的示例。

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
    spec:
      containers:
      - image: tomcat
        name: test-container
        volumeMounts:
        - mountPath: /www/log
          name: test-volume
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /mnt/data
          # this field is optional
          type: Directory