Kubernetes使用hostPath数据文件删除POD

cetgtptt  于 2022-11-28  发布在  Kubernetes
关注(0)|答案(2)|浏览(362)

我是Kubernetes的新手,我正在运行时创建POD来推送数据,在推送和收集数据后,我正在删除POD。
对于文件的处理,我已经连接SSD。并将其路径指定为hostPath:/my-drive/example在创建POD时。现在当我运行我的POD时,我可以看到定义路径中的文件。
但是,现在我只是想删除文件创建的POD在hostPath目录中,同时删除POD。这可能吗?
我的POD文件看起来像。

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: pod-example
spec:
  containers:
  - name: pod-example
    image: "myimage.com/abcd:latest"
    imagePullPolicy: Always
    workingDir: /pod-example
    env:
    volumeMounts:
    - name: "my-drive"
      mountPath: "/my-drive"
  volumes:
  - name: "my-drive"
    persistentVolumeReclaimPolicy: Recycle
    hostPath:
      path: /my-drive/example
  restartPolicy: Never
  imagePullSecrets:
  - name: regcred
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: "kubernetes.io/hostname"
            operator: In
            values:
            - my-node
        topologyKey: "kubernetes.io/hostname"
f1tvaqid

f1tvaqid1#

你可以通过在K8中使用lifecycle钩子来实现这一点。在它们下面,这里可以使用preStop钩子,因为你需要在停止pod时执行操作。
检查与生命周期挂接相关的文档:https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
如果你确切地知道要删除的文件或者目录,你可以使用Exec钩子处理程序。

lifecycle:
  preStop:
    exec:
      command:
        - "sh"
        - "-c"
        - >
          echo "Deleting files in my-drive/example/to-be-deleted" > /proc/1/fd/1 # Add preStop hook's stdout to main process's stdout
          rm -r my-drive/example/to-be-deleted

P.S.根据您的问题陈述,您似乎没有连续使用POD。如果您正在寻找的任务是定期执行或不连续执行,我建议您选择K8s CronJobJob,而不是POD。请确保在容器内具有删除文件/文件夹所需的用户访问权限。

5sxhfpxr

5sxhfpxr2#

如下所示,将persistentVolumeReclaimPolicy更新为Delete

persistentVolumeReclaimPolicy: Delete

相关问题