如何从 CLI 清理在 rancher 中终止的作业

How to cleanup jobs that are terminated in rancher from CLI

我使用 Rancher CLI 在 Rancher 中从事 运行 数千份工作。我想在任务完成后立即删除该作业。问题是当工作完成时,工作仍然 "Active" 在那里。

我尝试了 的建议,但它对我不起作用。如我所见,底层 docker 容器进入 "Terminated" 状态,但已部署的作业仍处于活动状态。

现在我必须同步等待作业完成,然后我触发 "kubectl delete" 命令删除作业。但我想异步执行此操作(删除所有 "done" 的作业)。

有什么想法吗?

更新

这是我的工作的 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

您可以启用 TTL Controller(对于 k8s 1.12 及更高版本),如果尚未启用,则添加 ttlSecondsAfterFinished: N 参数,在这种情况下,pods 创建了作业,作业本身将在 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 作业将在完成后立即自行清理。