【问题标题】:Kubernetes PVC deleting the contents of the PODKubernetes PVC 删除 POD 的内容
【发布时间】:2019-04-10 12:54:42
【问题描述】:

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

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

但是当附加 PVC 时,文件会被替换并创建一个 lost&found 目录。

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

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

因此,附加到 POD 的 PVC 会产生问题。

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

【问题讨论】:

    标签: kubernetes kubernetes-pvc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您的数据已从 pod 中删除,因为您的 PVC 路径未指向特定目录。

      在这种情况下,如果你想保存 docker 镜像默认附带的文件,你可以使用 init 容器来复制数据或更改权限,这样文件就不会被删除。

      initContainers:
           - name: init-sysctl
             image: busybox
             imagePullPolicy: IfNotPresent
             command: ["sysctl", "-w", "Command"]
             securityContext:
               privileged: true
             volume:
               mount path : /
      

      【讨论】:

      • 我尝试了 'initContainers',但 POD 没有自行初始化。
      猜你喜欢
      • 2020-02-13
      • 2018-12-23
      • 1970-01-01
      • 2019-05-24
      • 2020-06-11
      • 1970-01-01
      • 2019-12-27
      • 2019-03-16
      • 2018-04-29
      相关资源
      最近更新 更多