删除由cronjob创建的所有k8s pod

问题描述 投票:0回答:2

我有一个每10分钟运行一次的cronjob。所以每10分钟创建一个新的pod。一天后,我有很多已完成的pod(不是工作,只有一个cronjob存在)。有没有办法自动摆脱它们?

cron kubernetes jobs
2个回答
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标签的pod:

kubect delete pod -l is-cron

0
投票

特别是对于我的情况,我的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)
© www.soinside.com 2019 - 2024. All rights reserved.