我有一个DaemonSet
创建 flink 任务管理器 Pod,每个节点一个。
Nodes
假设我有两个节点
Pods
daemonSet 将创建
- 节点 A 上的 pod-A
- 节点 B 上的 pod-B
持久数量声明
- 我正在使用 AKS 并且想要使用
azure-disk
用于持久存储
- According to the docs : [https://learn.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv https://learn.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv ]
说我创造
- pvc-A 用于连接到节点 A 的 pv-A
- pvc-B 用于连接到节点 B 的 pv-B
Question
我怎样才能关联pod-A on node-A to use pcv-A ?
UPDATE:
After much谷歌搜索,我偶然发现使用 StatefulSet 可能会更好/更干净。这确实意味着您将无法通过 DaemonSet 获得可用的功能,例如每个节点一个 pod。
https://medium.com/@zhimin.wen/persistent-volume-claim-for-statefulset-8050e396cc51 https://medium.com/@zhimin.wen/persistent-volume-claim-for-statefulset-8050e396cc51
如果您在 daemonset 定义中使用 permanentVolumeClaim,并且 persistVolumeClaim 满足 PV 的类型hostPath
,您的守护进程 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,所以没问题。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)