如何从CLI清理在牧场主中终止的作业

时间:2019-12-01 06:57:16

标签: docker kubectl rancher

我正在使用牧场主CLI在牧场主中运行数千个工作。我想在任务完成后立即删除作业。问题是,当作业完成时,作业在此处保持“活动”状态。

我尝试了How to automatically remove completed Kubernetes Jobs created by a CronJob?的建议,但对我没有用。如我所见,底层docker容器进入“已终止”状态,但已部署的作业仍处于活动状态。

现在,我必须同步等待作业完成,然后触发“ kubectl delete”命令来删除作业。但是我想异步地做到这一点(删除“完成”的所有工作)。

有什么主意吗?

更新

这是我工作的yaml文件

apiVersion: batch/v1
kind: Job
metadata:
  name: runtest
  namespace: default
spec:
  ttlSecondsAfterFinished: 60
  template:
    metadata:
      labels:
        job-name: runtest
    spec:
      restartPolicy: Never
      containers:
      - args:
        - sh
        - /code/rancher_test/run_9.sh
        image: x11vnc/docker-desktop
        name: runtest
        stdin: true
        tty: true
        securityContext:
          runAsUser: 53197
        volumeMounts:
        - mountPath: /code
          name: code
      volumes:
      - hostPath:
          path: /code
          type: ""
        name: code

1 个答案:

答案 0 :(得分:2)

如果尚未启用TTL Controller(适用于k8s 1.12及更高版本),则可以启用它,并添加ttlSecondsAfterFinished: N参数,在这种情况下,创建作业的Pod以及作业本身将在 N 秒后被删除。

例如:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-ttl
spec:
  ttlSecondsAfterFinished: 0
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

这项典型的kubernetes pi工作将在完成后立即进行自我清理。