我有一个DaemonSet
,可以创建Flink Task Manager Pods,每个节点一个。
节点
说我有两个节点
- node-a
- node-b
豆荚
守护程序将创建
- pod-a on Node-a
- pod-b on节点-B
持续的卷声明
- 我在AK上,想使用
azure-disk
进行持续存储 - 根据文档:[https://learn.microsoft.com/en-us/azure/azure/aks/azure-disks-dynamic-pv]
- 可以将Azure磁盘与单节点相关联
说我创建
- pvc-a用于Node-a附加的PV-A
- pvc-b,用于连接到节点-B 的PV-B
问题
我如何关联 pod-a on node-a 使用 pcv-a ?
?更新:
谷歌搜索后,我偶然发现使用状态满者可能会更好/更清洁。这确实意味着您不会通过daemonset像每个节点一个吊舱那样获得可用的功能。
https://medium.com/@zhimin.wen/persistent-volume-claim-for-sentatefulsufsulset-8050e396cc51
如果您在daemonset定义中使用persistentVolumEclaim,并且PersistentVolumeClaim对hostPath
的类型对PV感到满意,则您的守护程序POD会读取并写入由hostPath
定义的本地路径。此行为将帮助您使用一个PVC分离存储。
这可能不直接适用于您的情况,但我希望这对未来搜索" daemonset 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: {}
您的守护程序豆荚实际上将在每个节点上使用/tmp/mem
。(每个节点上最多有1个守护程序吊舱,所以很好。)
将PVC连接到登蒙蒙特吊舱的方法与您使用其他类型的POD的方式没有什么不同。创建您的PVC并将其安装在吊舱上。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: my-pvc
namespace: x
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
这就是守护程序的样子:
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