【问题标题】:How to cleanup jobs that are terminated in rancher from CLI如何从 CLI 清理 Rancher 中终止的作业
【发布时间】:2020-03-26 03:23:59
【问题描述】:

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

我尝试了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

【问题讨论】:

  • 我可以知道为什么这个问题被否决了吗?

标签: docker kubectl rancher


【解决方案1】:

您可以启用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 作业在完成后会立即自行清理。

【讨论】:

  • 我已在我的问题中附加了 yaml 文件。我实际上正在使用“ttlSecondsAfterFinished”属性,但它不起作用。
  • 那么您没有启用 TTL 控制器。它是纯 k8s 还是云提供商?例如,在 GKE 上,您不能,因为您无权访问主服务器。
  • 感谢您的提示。我可以看到这在牧场主的 featureGates 中没有启用。你能告诉我如何在 kube 配置中启用 TTL 控制器吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多