kubernetes - 在 DaemonSet 中处理 PersistentVolumeClaim
问题描述
我有一个DaemonSet
创建 flink 任务管理器 pod,每个节点一个。
节点
假设我有两个节点
- 节点-A
- 节点-B
豆荚
daemonSet 将创建
- 节点 A 上的 pod-A
- 节点 B 上的 pod-B
持久卷声明
- 我在 AKS 上并想
azure-disk
用于持久存储 - 根据文档:[ https://docs.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv ]
- 天蓝色磁盘可以关联到单个节点
说我创造
- pvc-A 用于连接到节点 A 的 pv-A
- pvc-B 用于连接到节点 B 的 pv-B
问题
如何关联节点A上的pod- A以使用pcv-A?
更新:
经过多次谷歌搜索,我偶然发现使用 StatefulSet 可能会更好/更清洁。这确实意味着您将无法通过 DaemonSet 获得可用的功能,例如每个节点一个 pod。
https://medium.com/@zhimin.wen/persistent-volume-claim-for-statefulset-8050e396cc51
解决方案
如果您在 daemonset 定义中使用 persistentVolumeClaim,并且 persistentVolumeClaim 满足类型为 的 PV,则hostPath
您的 daemon pod 将读取和写入由 定义的本地路径hostPath
。此行为将帮助您使用一个 PVC 分离存储。
这可能并不直接适用于您的情况,但我希望这有助于将来搜索“volumeClaimTemplate for DaemonSet”之类的东西。
使用与 cookiedough 相同的示例(谢谢!)
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: x
namespace: x
labels:
k8s-app: x
spec:
selector:
matchLabels:
name: x
template:
metadata:
labels:
name: x
spec:
...
containers:
- name: x
...
volumeMounts:
- name: volume
mountPath: /var/log
volumes:
- name: volume
persistentVolumeClaim:
claimName: my-pvc
并且那个 PVC 绑定到一个 PV(注意只有一个 PVC 和一个 PV!)
apiVersion: v1
kind: PersistentVolume
metadata:
creationTimestamp: null
labels:
type: local
name: mem
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /tmp/mem
type: Directory
storageClassName: standard
status: {}
您的守护程序 pod 将实际/tmp/mem
在每个节点上使用。(每个节点上最多有 1 个守护进程 pod,所以这很好。)
推荐阅读
- excel - 停用 Measure 中的日期关系
- php - 有没有办法在一个表字段中插入多个 id?代码点火器
- macos - 无法清理 macOS Catalina 上的空间。“其他”从 500GB 中取出 370GB,其他工具显示了其中的一半
- reactjs - React-Material UI Grid Column 问题
- python - 使用正则表达式清理数据框列值
- python - 如何在 python 中使用 Cypari 包?
- python - 如何在 tkinter 应用程序中打包和使用图标?
- javascript - 更改 contenteditable div HTML 并将光标移动到末尾不起作用
- flutter - 从 http POST 请求 Result Flutter 在 listview builder 上显示数据
- python-3.x - 熊猫数据框意味着功能不起作用