删除由cronjob创建的所有k8s吊舱

时间:2018-08-29 20:48:11

标签: cron kubernetes jobs

我有一个cronjob,每10分钟运行一次。因此,每隔10分钟就会创建一个新的广告连播。一天后,我有很多完成的豆荚(没有工作,只有一个cronjob)。有没有办法自动摆脱它们?

2 个答案:

答案 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)