当前位置: 首页 > 知识库问答 >
问题:

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

齐泰
2023-03-14

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

我尝试了如何自动删除由CronJob创建的已完成的Kubernetes作业?但这对我不起作用。正如我所看到的,底层docker容器进入“终止”状态,但是部署的作业仍然是活动的。

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

有什么想法吗?

使现代化

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

左丘峰
2023-03-14

您可以启用TTL控制器(对于k8s 1.12及更高版本),如果它尚未启用,请添加ttl秒后完成: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

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

 类似资料:
  • 我们的Spring批处理作业在处理输入文件时突然失败。当我试图重新运行批处理作业时,它会抛出以下消息。 02:27:09.088[main]调试O.S.B.C.R.dao.jdbcstepExecutionDAO-在更新StepExecution之前截断长消息,原始消息为:org.springframework.batch.core.jobExecutionException:无法从开始状态重新启

  • 问题内容: 我在一个大型组织中工作,该组织在一个共享的Jenkins集群中运行数百个工作。 我的Jenkins工作需要针对Docker容器中运行的不受信任的代码运行集成测试。我担心当我的詹金斯(Jenkins)工作突然终止(例如,工作中止或超时)时,我将身处孤儿容器中。 我已经尝试过https://github.com/moby/moby/issues/1905,但它对我不起作用(这是因为它仅适用

  • 距今已过去数小时,话题仍未删除。 我看到了一些建议,建议我将放在我的中,然后重新启动Kafka。我试过这个。没奏效。 (为什么默认不设置这个?) 我可以关闭kafka和zookeeper,运行,然后再次启动zookeeper和kafka。但这是相当激烈的。确实应该有一些方法来说服实际上删除一个主题?

  • 我有一个作业调度bash外壳脚本,其中包含以下代码: 我在后台运行这样的脚本: 我想用 kill -9 终止此调度程序进程。但是我第一次没有记录调度程序进程的 pid。相反,我使用作业来显示所有过程,但它什么也不显示。即使这个fg也不能将这个过程带到前台。 但是我认为这个调度程序进程仍然在运行,因为它仍然在继续分配java程序运行。我应该如何终止这个作业调度程序bash外壳脚本进程? 编辑:我使用

  • 问题内容: 当我创建/调试docker映像/容器docker时,似乎在我的系统上留下了各种工件。(有一点限制为48张图像),但是我上次查看的图像为20-25张;。 因此,首要问题是: 如何正确清理? 当我手动删除图像时,更多的图像开始出现。嗯? 我应该为主机真正分配多少磁盘空间? 下次重启后,正在运行的守护程序会真正重启吗? 以及meta问题…我没有问过什么问题? 问题答案: 删除“晃来晃去”的图

  • 我正在尝试终止子线程,它正在等待来自服务器的输入。我尝试使用该标志进行操作,但它在上停止,因为它等待来自服务器的输入,并且只有在此输入之后才检查该标志并中断。但这不是一个好的解决方案,因为我无法阻止它没有服务器消息。我还尝试先检查标志,然后再检查readline(),但它也不起作用。有什么好的解决办法吗?