我已经完全通过Web控制台创建了“持久卷声明”,并将其附加到Web服务器的/ www / log安装路径中。
我看到Persistent Volume Claim的工作方式就像重新启动Pod一样,保留了日志。
但是,我想在主机上使用本地安装作为永久卷,以便可以轻松跟踪日志。 在OKD Web控制台上,您只能创建新的PVC,但不能创建指向本地安装的PV。 您能否建议如何更新自动拾取的持久卷以使用本地挂载(例如/ mnt / data)?
答案 0 :(得分:1)
可以通过使用OpenShift中通过命令行运行的 hostPath 选项 Persistent Volume YAML 来解决此问题。但是,如果您想走这条路的话,有些事情要提防。
在路径/mnt/data
中创建的所有文件和目录只能由 root 用户写入。在这种情况下,您必须运行特权容器或为hostPath提供适当的权限以使其可写。
以下 YAML 在持久卷中具有 hostPath 选项的语法。
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv
spec:
capacity:
storage: 1Mi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
hostPath:
path: /mnt/data
运行以下命令以在特定项目中创建持久卷。 oc create -f test-pv.yaml -n <project>
一旦您有了持久卷,就创建一个持久卷声明,该声明绑定到上面创建的持久卷。
如果要将hostPath直接安装在Pod上,请确保在部署配置中使用节点选择器,因为Pod是临时并且可以在任何时间点重新创建它们。如果将具有hostPath的Pod安排在可能没有/mnt/data
路径的另一台主机上,则可能导致CrashLoopBackOff
错误。
下面的 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