首页 > 解决方案 > 如何从 CLI 清理 Rancher 中终止的作业

问题描述

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

我尝试了如何自动删除由 CronJob 创建的已完成 Kubernetes 作业的建议?但它不适合我。正如我所看到的,底层 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

标签: dockerkubectlrancher

解决方案


您可以启用TTL 控制器(适用于 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

这个典型的 kubernetespi作业在完成后会立即自行清理。


推荐阅读