我正在使用牧场主CLI在牧场主中运行数千个工作。我想在任务完成后立即删除作业。问题是,当作业完成时,作业在此处保持“活动”状态。
我尝试了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
答案 0 :(得分:2)
如果尚未启用TTL Controller(适用于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
这项典型的kubernetes pi
工作将在完成后立即进行自我清理。