如何 运行 创建 PersistentVolume 的命令?

How to run a command on PersistentVolume creation?

我有一个 StatefulSet 看起来像这样

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

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

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

我想创建一个 Job 来安装这些 PV 并运行命令,但我如何知道创建了多少 PV?

是否有 kubernetes-native 解决方案在 PV 创建时触发一些 pod 执行?

解决方案是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