kubectl wait --for=condition=<condition name
ожидает определенного условия, поэтому в данный момент он не может указать несколько условий в данный момент.
Мой обходной путь использует oc get --wait
, --wait
закрывает команду, если целевой ресурс обновлен. Я буду контролировать status
раздел задания, используя oc get --wait
, пока status
не будет обновлен. Обновление раздела status
означает, что задание выполнено с некоторыми условиями состояния.
Если задание завершено успешно, status.conditions.type
немедленно обновляется как Complete
. Но если работа не удалась, модуль будет автоматически перезапущен независимо от restartPolicy
, равного OnFailure
или Never
. Но мы можем считать, что задание имеет статус Failed
, если не обновлено как Complete
после первого обновления.
Посмотрите мои тестовые данные следующим образом.
- Задание yaml для успешного завершения тестирования
# vim job.yml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
parallelism: 1
completions: 1
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["perl", "-wle", "exit 0"]
restartPolicy: Never
- Он покажет вам
Complete
, если он успешно завершит работу.
# oc create -f job.yml &&
oc get job/pi -o=jsonpath='{.status}' -w &&
oc get job/pi -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed"
job.batch/pi created
map[startTime:2019-03-09T12:30:16Z active:1]Complete
- Не удалось выполнить задание yaml для тестирования
# vim job.yml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
parallelism: 1
completions: 1
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["perl", "-wle", "exit 1"]
restartPolicy: Never
- Он покажет вам
Failed
, если первое обновление задания не будет Complete
. Проверьте, если после удаления существующего ресурса задания.
# oc delete job pi
job.batch "pi" deleted
# oc create -f job.yml &&
oc get job/pi -o=jsonpath='{.status}' -w &&
oc get job/pi -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed"
job.batch/pi created
map[active:1 startTime:2019-03-09T12:31:05Z]Failed
Надеюсь, это поможет вам. :)