5

我有一个DaemonSet创建 flink 任务管理器 pod,每个节点一个。

节点

假设我有两个节点

  • 节点-A
  • 节点-B

豆荚

daemonSet 将创建

  • 节点 A 上的 pod-A
  • 节点 B 上的 pod-B

持久卷声明

说我创造

  • 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

4

2 回答 2

4

如果您在 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,所以这很好。)

于 2020-03-08T16:03:48.027 回答
-2

将 PVC 附加到 DaemonSet pod 的方式与使用其他类型的 pod 的方式没有任何不同。创建您的 PVC 并将其作为卷安装到 pod 上。

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
于 2019-03-14T14:55:18.377 回答