Удалить все модули k8s, созданные cronjob - PullRequest
0 голосов
/ 29 августа 2018

У меня есть cronjob, который запускается каждые 10 минут. Таким образом, каждые 10 минут создается новый модуль. Через день у меня много готовых модулей (не рабочих мест, существует только один cronjob). Есть ли способ автоматически от них избавиться?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Специально для моей ситуации мои модули не полностью закрывались, так как я запускал один контейнер с фактическим заданием, другой с облачным SQL-прокси и облачным SQL-прокси, который препятствовал успешному завершению модуля.

Исправление было в том, чтобы убить процесс прокси через 30 секунд (моя работа обычно занимает пару секунд). Затем, как только задание будет завершено, в блоке 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)
0 голосов
/ 30 августа 2018

Это работа для этикеток.

Используйте их на 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
...