Helm провалил тестовое задание продолжает перезапуск - PullRequest
0 голосов
/ 14 февраля 2020

Я запускаю свои django модульные тесты в моем кластере с помощью команды helm. Они запускаются правильно, но когда модульные тесты не проходят, kubernetes продолжает перезапускать их снова и снова, несмотря на «restartPolicy: Never».

Как я могу заставить kubernetes / helm запускать мои модульные тесты только один раз? , не удалось или нет?

django -test.yml:

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{ .Release.Name }}-django-test"
  labels:
    app: {{ template "myproject.fullname" . }}
    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    release: "{{ .Release.Name }}"
  annotations:
    "helm.sh/hook": test
spec:
  template:
    metadata:
      name: "{{ .Release.Name }}-django-test"
    spec:
      containers:
        - name: main
          image: {{ template "myproject.django.image" . }}
          args:
            - test
      restartPolicy: Never
➜  ~ kubectl get pods --namespace mynamespace
NAME                            READY   STATUS      RESTARTS   AGE
myrel-django-install-jhspp   0/1     Completed   0          78m
myrel-django-test-6dzrq      0/1     Error       0          47m
myrel-django-test-7hpwm      0/1     Error       0          67m
myrel-django-test-nd74f      0/1     Error       0          73m
myrel-django-test-np5qd      0/1     Error       0          39m
myrel-django-test-nqjdw      0/1     Error       0          60m
myrel-django-test-tjbhc      0/1     Error       0          53m
...

1 Ответ

1 голос
/ 14 февраля 2020

Посмотрите на параметр backoffLimit .

Политика отказа откатов модуля

Существуют ситуации, когда вы хотите завершить работу после некоторого количества попыток из-за логической ошибки в конфигурации et c. Для этого установите .spe c .backoffLimit, чтобы указать количество повторных попыток, прежде чем рассматривать задание как неудачное. Предел отсрочки по умолчанию установлен равным 6.

Я не пробовал этого, но я верю, что это даст вам желаемое поведение.

    spec:
      containers:
        - name: main
          image: {{ template "myproject.django.image" . }}
          args:
            - test
      backoffLimit: 1
      restartPolicy: Never

Вы можете также полезен следующий пост: Понимание backoffLimit в Kubernetes Job

...