Следите за выходом на работу в Kubernetes до завершения - PullRequest
1 голос
/ 24 июня 2019

Есть ли способ просмотреть вывод задания (STDOUT и STDERR) с помощью kubectl?Нам нужно дождаться завершения задания, наблюдая за его выводом, и, если задание заканчивается с ошибкой, весь процесс должен быть прерван.

Я бы хотел перенаправить вывод задания (STDOUT и STDERR) в мой текущий процесс STDOUT.Я хочу дождаться завершения работы.В случае, если он завершился с ошибкой, текущий процесс (который запустил задание через kubectl) также должен завершиться с ошибкой.Я знаю kubectl wait, но, насколько я знаю, он не поддерживает прослушивание вывода заданий.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

В итоге мы использовали три команды для выполнения задачи.Сначала мы удаляем старое задание (оно могло быть выполнено раньше), создаем новое задание, ожидаем его завершения (с тайм-аутом) и после его завершения печатаем журналы:

kubectl delete job my-job || true
kubectl apply -f ./jobs/my-job.yaml
kubectl wait --for=condition=complete job/my-job --timeout=60s
echo "Job output:"
kubectl logs job/my-job
0 голосов
/ 25 июня 2019

Есть несколько вариантов, которые вы можете попробовать:

  1. Просмотр журналов заданий в режиме реального времени:
    • kubectl logs --follow $POD

Если у вас возникли проблемы с поиском подходящего модуля, то сначала перейдите kubectl describe job $JOB Имя модуля будет в разделе «События»

Есть еще несколько команд kubectl, которые могут быть полезны здесь:
  • kubectl logs -f my-pod - журналы потоковых модулей (stdout)
  • kubectl logs -f my-pod -c my-container - журналы контейнеров потоковых модулей (stdout, multi-контейнерный контейнер)
  • kubectl logs -f -l name=myLabel --all-containers - поток всех журналов pods с меткой name = myLabel (stdout)

Подробнее об этом можно прочитать здесь

Попробуйте еще раз с kubectl wait, но с правильными флагами, такими как --for=condition=xxxxx На стандартный вывод будет выведено успешное сообщение, указывающее, когда указанное условие выполнено.
...