Kubernetes 有没有办法在POD状态为'后通过YAML自动删除它们;已完成';?

Kubernetes 有没有办法在POD状态为'后通过YAML自动删除它们;已完成';?,kubernetes,yaml,Kubernetes,Yaml,我有一个YAML文件,它在执行时创建一个pod。这个pod从我们的一个内部系统中提取数据并上传到GCP。这样做大约需要12分钟,之后pod的状态变为“已完成”,但我想在完成后删除此pod apiVersion: v1 kind: Pod metadata: name: xyz spec: restartPolicy: Never volumes: - name: mount-dir hostPath: path: /data_in/datos/abc/ i

我有一个YAML文件,它在执行时创建一个pod。这个pod从我们的一个内部系统中提取数据并上传到GCP。这样做大约需要12分钟,之后pod的状态变为“已完成”,但我想在完成后删除此pod

apiVersion: v1
kind: Pod
metadata:
  name: xyz
spec:
  restartPolicy: Never
  volumes:
  - name: mount-dir
    hostPath:
      path: /data_in/datos/abc/
  initContainers:
   - name: abc-ext2k8s
     image: registrysecaas.azurecr.io/secaas/oracle-client11c:11.2.0.4-latest
     volumeMounts:
     - mountPath: /media
       name: mount-dir
     command: ["/bin/sh","-c"] 
     args: ["sqlplus -s CLOUDERA/MYY4nGJKsf@hal5:1531/dbmk @/media/ext_hal5_lk_org_localfisico.sql"]
  imagePullSecrets:
   - name: regcred

有没有办法做到这一点?

通常,您不想创建裸露的Kubernetes吊舱。您所描述的模式是在一个pod中运行一些中等长度的任务,然后让它退出,这与。(在其他属性中,如果某个作业所在的节点出现故障,则该作业将重新调度pod。)

不过,仅仅将此转换为工作并不能直接解决您的问题:

作业完成后,不会再创建POD,但也不会删除POD。保留它们允许您仍然查看已完成POD的日志,以检查错误、警告或其他诊断输出。作业对象也会在完成后保留,以便您可以查看其状态。用户可以在记录旧作业的状态后删除它们

因此,创建pod(或作业)的任何任务都需要监视其完成情况,然后删除pod(或作业)。(考虑使用或等效地使用
kubectl get-w
选项查看创建的对象何时更改状态。)无法在YAML文件中直接指定这一点,因为您有一个特定的意图,可以从完成的pod中获取有用的信息


如果这实际上是一项夜间任务,您希望在午夜或类似时间运行,那么您还有一个选择。A将按某个时间表运行作业,而该时间表又运行一个pod。这里重要的相关细节是。因此,如果CronJob与您的模式匹配,您可以在CronJob规范中设置
successfulJobsHistoryLimit:0
,创建的作业及其匹配的pod将立即被删除。

谢谢David。我昨天在研究这个问题,创造就业机会,我不清楚的是,我是要将这个yaml更改为“工作”类型,使用ttlSecondsAfterFinished:100而不是Pod,还是我要创建一个新的yaml,使用“工作”类型,它们可以相互关联?很抱歉,如果这是一个基本问题,我是新手,在阅读文档时不清楚。