如何在PersistentVolume创建上运行命令?

时间:2020-05-25 18:09:12

标签: kubernetes persistent-volumes kubernetes-statefulset

我有一个StatefulSet,看起来像这样

apiVersion: v1
kind: StatefulSet
metadata:
  name: web
spec:
  ...
  volumeClaimTemplates:
  — metadata:
      name: www
    spec:
      resources:
        requests:
          storage: 1Gi

它将为它控制的PersistentVolumeClaim中的每个PersistentVolume创建一个Pod(PVC)和一个Service(PV)。

我想在Pod创建之前在这些PV上执行一些命令。

我当时正在考虑创建一个Job来安装这些PV并运行命令,但是我怎么知道创建了多少PV?

是否有Kubernetes原生解决方案在PV创建时触发某些pod执行?

1 个答案:

答案 0 :(得分:1)

解决方案是InitContianer

您可以将其添加到您的StatufulSet的规范中:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name:  web
spec:
...
  spec:
    initContainers:
    - name: init-myapp
      image: ubuntu:latest
      command:
      - bash
      - "-c"
      - "your command"
      volumeMounts:
      - name: yourvolume
        mountPath: /mnt/myvolume