我有一个cronjob,每10分钟运行一次。因此,每隔10分钟就会创建一个新的广告连播。一天后,我有很多完成的豆荚(没有工作,只有一个cronjob)。有没有办法自动摆脱它们?
答案 0 :(得分:2)
这是标签的工作。
在您的CronJob
上使用它们,并使用selector
(-l
标志)删除完成的广告连播。
例如:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: my-cron
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: periodic-batch-job
is-cron: "true"
spec:
containers:
- name: cron
image: your_image
imagePullPolicy: IfNotPresent
restartPolicy: OnFailure
使用以下方法删除所有带有cron标签的豆荚:
kubect delete pod -l is-cron
答案 1 :(得分:0)
根据我的情况,我的Pod并未完全终止,因为我正在运行一个容器执行实际作业,另一个正在运行Cloud sql代理,而Cloud sql代理阻止Pod成功完成。
解决方法是在30秒后终止代理进程(我的工作通常需要几秒钟)。然后,一旦作业完成,cronjob上的successJobsHistoryLimit就会启动,并且(默认情况下)仅保留最后3个窗格。
- name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.11
command: ["sh", "-c"]
args:
- /cloud_sql_proxy -instances=myinstance=tcp:5432 -credential_file=/secrets/cloudsql/credentials.json & pid=$! && (sleep 30 && kill -9 $pid 2>/dev/null)