docker - 如何从 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
解决方案
您可以启用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
作业在完成后会立即自行清理。
推荐阅读
- deep-learning - 给定一个神经网络和一个问题大小 N、2N、3N... 网络的空间复杂度将如何随问题大小扩展?
- python - 如何设置 Django 静态文件?
- typescript - gettext() 在量角器中总是返回空
- c++ - C++ 泛型方法给出“没有匹配的调用函数”错误
- c++ - 我用 Gstreamer MSVC 1.16.1 构建 opencv 3.4,现在 imread 和 VideoCapture 不起作用
- regex - 如何通过删除postgres中的中间部分来获取字符串
- python-3.x - 循环中打印位置导致的差异
- scala - Spark Scala 中的点积
- mysql - 如何在mysql中找到平均差异?
- sql - 如果我的要求是 postgresql 和 sql server,如何使 spring boot 代码通用或动态?