我有一个DaemonSet
,它创建了flink任务管理器pod,每个节点一个。
说我有两个节点
daemonSet将创建
azure-disk
进行持久存储说我创建
如何在节点A 上关联 pod-A 以使用 pcv-A ?
在进行很多搜索之后,我偶然发现使用StatefulSet可能更好/更清洁。这确实意味着您不会通过DaemonSet获得像每个节点一个pod一样可用的功能。
https://medium.com/@zhimin.wen/persistent-volume-claim-for-statefulset-8050e396cc51
答案 0 :(得分:1)
如果您在守护程序定义中使用了persistentVolumeClaim,并且PV对hostPath
类型的PV感到满意,则您的守护程序吊舱将读写hostPath
定义的本地路径。此行为将帮助您使用一个PVC分离存储。
这可能并不直接适用于您的情况,但希望这对以后搜索诸如“ DaemonSet的volumeClaimTemplate”之类的人有所帮助。
使用与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 :(得分:0)
将PVC连接到DaemonSet容器的方法与使用其他类型的容器的方法没有任何不同。创建您的PVC并将其作为卷安装到容器上。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: my-pvc
namespace: x
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
这是DaemonSet清单的样子:
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