Есть ли способ автоматически удалять модули через YAML после того, как они имеют статус «Завершено»? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть файл YAML, который создает модуль при выполнении. Этот модуль извлекает данные из одной из наших внутренних систем и загружает их в GCP. Это займет около 12 минут, после чего статус модуля изменится на «Завершено», однако я хотел бы удалить этот модуль после его завершения.

apiVersion: v1
kind: Pod
metadata:
  name: xyz
spec:
  restartPolicy: Never
  volumes:
  - name: mount-dir
    hostPath:
      path: /data_in/datos/abc/
  initContainers:
   - name: abc-ext2k8s
     image: registrysecaas.azurecr.io/secaas/oracle-client11c:11.2.0.4-latest
     volumeMounts:
     - mountPath: /media
       name: mount-dir
     command: ["/bin/sh","-c"] 
     args: ["sqlplus -s CLOUDERA/MYY4nGJKsf@hal5:1531/dbmk @/media/ext_hal5_lk_org_localfisico.sql"]
  imagePullSecrets:
   - name: regcred

Есть ли способ добиться этого?

1 Ответ

1 голос
/ 05 июня 2019

Как правило, вы не хотите создавать голые стручки Kubernetes.Шаблон, который вы описываете для запуска некоторой задачи средней длины в модуле, а затем с ее завершением, соответствует Job .(Среди других свойств, задание будет перепланировать модуль, если узел, на котором он находится, дает сбой.)

Тем не менее, просто переключение этого на задание напрямую не решает ваш вопрос. Примечания к документации :

Когда задание завершается, больше не создается модулей, но они также не удаляются.Хранение их позволяет вам по-прежнему просматривать журналы завершенных модулей, чтобы проверить наличие ошибок, предупреждений или других диагностических результатов.Объект задания также остается после его завершения, чтобы вы могли просматривать его состояние.Пользователь может удалить старые задания, отметив их состояние.

Таким образом, независимо от того, какая задача создает модуль (или задание), необходимо следить за его завершением, а затем удалять модуль (или задание).,(Подумайте об использовании watch API или, что то же самое, опции kubectl get -w, чтобы увидеть, когда созданные объекты изменяют состояние.) Нет прямого способа указать это в файле YAML, так как есть конкретное намерение, которое вы можете получитьполезная информация из готового модуля.

Если это действительно ночное задание, которое вы хотите запустить в полночь или что-то подобное, у вас есть еще один вариант. CronJob будет запускать задание по некоторому расписанию, которое, в свою очередь, запускает один модуль.Важная важная деталь здесь заключается в том, что CronJobs имеют явный контроль над тем, сколько выполненных заданий они хранят .Поэтому, если CronJob соответствует вашему шаблону, вы можете установить successfulJobsHistoryLimit: 0 в спецификации CronJob, и созданные задания и соответствующие им модули будут немедленно удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...