Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes PVC删除POD中的内容_Kubernetes_Kubernetes Pvc - Fatal编程技术网

Kubernetes PVC删除POD中的内容

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/

我有一个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:

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本身并没有初始化。