如何 运行 创建 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
我有一个 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