openshift - 如何更改持久卷以使用主机上的路径?
问题描述
我完全通过 Web 控制台创建了一个持久卷声明并附加到我的 Web 服务器的 /www/log 挂载路径。我看到 Persistent Volume Claim 就像我重新启动 Pod 一样工作,日志被保留了。
但是,我想在主机上为持久卷使用本地挂载,以便我可以轻松地跟踪我的日志。在 OKD Web 控制台上,您只能创建新的 PVC,但不能创建指向本地挂载的 PV。您能否建议如何更新自动拾取的持久卷以使用本地挂载(例如 /mnt/data)?
解决方案
这可以通过在通过命令行运行的 OpenShift 中使用hostPath选项Persistent Volume YAML来解决。但是,如果你想走这条路,有一些事情需要注意。
路径中创建的所有文件和目录
/mnt/data
只能由root用户写入。在这种情况下,您必须运行特权容器或授予hostPath 适当的可写权限。以下YAML在 Persistent 卷中具有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>
一旦你有可用的持久卷,创建一个持久卷声明,该声明绑定到上面创建的持久卷。
如果您想直接在 Pod 上挂载 hostPath,请确保在部署配置中使用节点选择器,因为 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
推荐阅读
- data-visualization - 如何在 Google Data Studio 上使用 3rd-party 的直方图
- javascript - 如何添加阅读更多/阅读更少按钮?
- python - 如何在 Python 中合并/组合列表元素
- java - 运行 Kotlin 时这些非法访问警告是什么以及如何阻止它们?
- reactjs - 如何通过堆栈导航(Stack.Screen)传递道具
- javascript - html 字符串自动替换 unicode 字符
- laravel - 方法 Illuminate\Database\Query\Builder::id 不存在
- python - 什么部分是模棱两可的?我试图使用索引的日期(时区感知)附加到字典中的数据框
- javascript - 添加onclick事件的Javascript函数
- ubuntu - WSL:如何从 WSL 上的 linux 系统命令行在 windows 上运行浏览器