我有一个每10分钟运行一次的cronjob。所以每10分钟创建一个新的pod。一天后,我有很多已完成的pod(不是工作,只有一个cronjob存在)。有没有办法自动摆脱它们?
这是标签的工作。
在你的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标签的pod:
kubect delete pod -l is-cron
特别是对于我的情况,我的pod没有完全终止,因为我运行一个容器与实际工作,另一个与云sql代理,和云sql代理阻止pod成功完成。
修复是在30秒后终止代理进程(我的工作通常需要几秒钟)。然后,一旦作业完成,cronjob上的SuccessfulJobsHistoryLimit就会启动并保持(默认情况下)只有3个最后一个pod。
- 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)