Kubernetes PVC删除POD中的内容
我有一个Kubernetes吊舱在运行,我在上面贴了一个PVC。 PVC体积为/opt/stackstorm 默认情况下,/opt/stackstorm中包含某些文件,作为docker官方图像的一部分。当POD上没有PVC连接时,这些文件可见 但是,当连接PVC时,文件将被替换,并创建丢失和找到的目录 即使在连接PVC之后,我们如何保留目录 我已经更改了PVC的目录。当我将目录从opt/stackstorm更改为/opt/stack时,/opt/stackstorm拥有所有详细信息,但/opt/stack变为空 因此,PVC连接到POD时会产生问题 pvc.yaml:Kubernetes PVC删除POD中的内容,kubernetes,kubernetes-pvc,Kubernetes,Kubernetes Pvc,我有一个Kubernetes吊舱在运行,我在上面贴了一个PVC。 PVC体积为/opt/stackstorm 默认情况下,/opt/stackstorm中包含某些文件,作为docker官方图像的一部分。当POD上没有PVC连接时,这些文件可见 但是,当连接PVC时,文件将被替换,并创建丢失和找到的目录 即使在连接PVC之后,我们如何保留目录 我已经更改了PVC的目录。当我将目录从opt/stackstorm更改为/opt/stack时,/opt/stackstorm拥有所有详细信息,但/opt/
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: stacke
annotations:
volume.beta.kubernetes.io/storage-class: "ebs"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
deployment.yaml:
volumeMounts:
- name: stacke
mountPath: /opt/stackstorm
volumes:
- name: stacke
persistentVolumeClaim:
claimName: stacke
imagePullSecrets:
- name: regcred
预期结果是/opt/stackstorm应该将所有文件作为图像的一部分。您的数据从pod中删除,因为您的PVC路径没有指向特定的目录 在这种情况下,如果要保存docker image附带的默认文件,可以使用init container,它将复制数据或更改权限,以便不会删除文件
initContainers:
- name: init-sysctl
image: busybox
imagePullPolicy: IfNotPresent
command: ["sysctl", "-w", "Command"]
securityContext:
privileged: true
volume:
mount path : /
您可以将/opt/stackstorm的内容复制到dockerfile中的新目录,并生成新映像。之后,您可以在运行时将新目录的内容复制回/opt/stackstorm。发生所有这些问题是因为此目录在生成时被初始化。 对于在运行时复制,您可以在kubernetes中使用容器生命周期。 例如:
规格:
容器:
-姓名:。。。。
图像:。。。。
生命周期:
启动后:
执行官:
命令:[“cp”、“-r”、“/test/”、“/opt/stackstorm”]
此命令在容器启动后运行。
但是这种方法每次pod启动时都会进行复制,如果您想避免这种情况,可以在构建时删除dockerfile中/opt/stackstorm的内容,然后在postStart命令中编写脚本以检查此目录是否为空进行复制。
您可以使用/opt/stackstorm作为mountPath,并像您所做的那样将pvc连接到它。我尝试了“initContainers”,但POD本身并没有初始化。