gpt4 book ai didi

Kubernetes PVC 删除 POD 的内容

转载 作者:行者123 更新时间:2023-12-02 11:32:41 25 4
gpt4 key购买 nike

我有一个 Kubernetes POD 正在运行,并且我已将 PVC 附加到它。PVC 卷是/opt/stackstorm。

默认情况下,/opt/stackstorm 中有一些文件是 docker 官方镜像的一部分。当没有 PVC 附加到 POD 时,这些文件是可见的。

但是当附加 PVC 时,文件将被替换并创建一个丢失和找到的目录。

我们如何在附加 PVC 后保留目录?

我已经更改了 PVC 的目录。当我将目录从 opt/stackstorm 更改为/opt/stack 时,/opt/stackstorm 包含所有详细信息,但/opt/stack 变为空。

因此,当 PVC 连接到 POD 时会产生问题。

PVC.yaml:

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 应该将所有文件作为镜像的一部分。

最佳答案

你可以将/opt/stackstorm 的内容复制到 dockerfile 中的一个新目录并构建一个新的镜像。之后,您可以在运行时将新目录的内容复制回/opt/stackstorm。所有这些问题的发生都是因为这个目录在构建时被初始化。要在运行时复制,您可以使用 postStart在 kubernetes 的容器生命周期中。例如:
规范:
容器:
- 姓名: ....
图片: ....
生命周期:
发布开始:
执行:
命令:[“cp”,“-r”,“/test/”,“/opt/stackstorm”]
此命令在容器启动后运行。但是这种方法每次 pod 启动时都会复制,如果你想避免这种情况,你可以在构建时删除 dockerfile 中/opt/stackstorm 的内容,然后在 postStart 命令中编写脚本来检查这个目录是否为空,然后进行复制。您可以将/opt/stackstorm 作为 mountPath 并将 pvc 附加到它,就像您所做的那样。

关于Kubernetes PVC 删除 POD 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55613111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com