kubernetes - Kubernetes 卷类型
问题描述
我在K8
主服务器上有目录。
我有 20 个 pod(带有部署副本)。
我希望从主目录读取所有 pod/path/in/master/infiles
并将它们的输出写入同一目录/path/in/master/outfiles
,在这种情况下我应该使用哪种卷类型?我希望我的文件在 pod 死后不被删除。
我试图查看以下内容:https ://kubernetes.io/docs/concepts/storage/volumes/但仍然不知道什么是我的情况的最佳选择。
有什么建议么?
解决方案
您可以使用hostPath卷。
卷hostPath
将文件或目录从主机节点的文件系统安装到您的 Pod 中。
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/path/in/master/infiles"
查看本指南以了解如何使用 hostPath。
更好的选择是使用本地卷。
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 100Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
local:
path: "/path/in/master/infiles"
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- example-node
与 hostPath 卷相比,本地卷可以以持久且可移植的方式使用,而无需手动将 Pod 调度到节点,因为系统通过查看 PersistentVolume 上的节点亲和性来了解卷的节点约束。
编辑:
将数据存储在节点本身的文件系统中的问题是无法在节点之间同步数据。如果应用程序需要这样做,那么在 ReadWriteMany(RWX) 模式下使用由 NFS 支持的 PV 是更好的选择。这是有关如何在数字海洋中进行这项工作的指南。
推荐阅读
- javascript - 如何在javascript中添加两个数字并在标题中显示结果
- git - 如何将存储库添加到另一个,作为 GitHub 上的文件夹
- python - python:打开文件时出现“TypeError:预期的str,字节或os.PathLike对象,而不是列表”
- swift - 使用 XIB 将数据从 UIViewController 传递到自定义 UIView
- google-calendar-api - 使用 Google Calendar API 检索域中的所有事件
- asp.net-mvc - 找不到源 - 找不到 RouteProvider
- ggplot2 - 在 R 中可视化线性混合模型
- java - 将包含数字的字符串与包含相同的另一个字符串相乘?
- php - 如何在知道服务器名称的情况下连接到 PHP 我的管理数据库
- excel - vba powerpoint图表工作簿关闭