Как проверить, что задание завершено до его создания с помощью kubectl? - PullRequest
0 голосов
/ 25 апреля 2020

Я могу использовать kubectl wait --for=condition=complete --timeout=<some time> job/<job-name> для ожидания задания в завершенном состоянии. Однако, если задание еще не создано (иногда это связано с тем, что k8s занимает некоторое время для планирования задания), kubectl немедленно завершит работу с ошибкой.

Есть ли способ дождаться создания задания и затем перейти в завершенное состояние? Какой самый распространенный способ сделать это в промышленности?

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

kubectl wait не включает в себя функцию ожидания на несуществующем ресурсе еще .

Для чего-либо сложного попробуйте и используйте клиент kube API . Запустите watch для группы ресурсов, и вы получите поток событий для нее, и продолжите, когда критерии события будут выполнены.

Если вы застряли в земле оболочки, kubectl, похоже, не учитывает сигналы SIGPIPE при обработке вывода kubectl get x --watch, так что, может быть, простой l oop ...

timeout=$(( $(date +%s) + 60 )) 
while ! kubectl get job whatever 2>/dev/null; do
  [ $(date +%s) -gt $timeout ] && exit 1
  sleep 5
done
0 голосов
/ 25 апреля 2020
kubectl wait --for=condition=created --timeout=<some time> job/<job-name>

Редактировать : Если я не ошибаюсь, kubectl wait все равно остается экспериментальным, но имя, которое вы называете, должно соответствовать тому, что вы ожидаете в стандарте вывод состояния.

Второе редактирование : неверное обновление символа

...