После нажатия я хочу создать одно задание сборки kaniko, в настоящее время оно работает, но после его завершения отображается:
kaniko-5jbhf 0/1 Completed 0 9m13s
Тем не менее, когда я запускаю следующее, он просто останавливается на неопределенный срок:
kubectl wait --timeout=-1s --for=condition=Completed pod/kaniko
Мой вопрос можно резюмировать в 2 части: 1). Как я могу дождаться завершения модуля / задания? 2). Как я могу удалить задание после его завершения?
Я пробовал ttlSecondsAfterFinished, но включение шлюзов функций в кластере проблематично, и нет примера, как это сделать.
Для wait
чтобы оценить состояние ресурса, нужно правильно его идентифицировать. Для второго фрагмента вам необходимо предоставить идентификатор пакета вместо названия вакансии: kubectl wait --timeout=-1s --for=condition=Completed pod/kaniko-5jbhf
. Однако синтаксис кажется правильным для вызова самого задания как job/kaniko
.
Для получения дополнительной информации на wait
.
Теперь для Job
удаление, если вы не хотите использовать ворота функций, я думаю, вы можете программный доступ к API найти и удалить готовые Jobs
или сделать их зависимыми от родительского объекта, который удаляет их каскадно. Для Jobs
в частности, есть только CronJobs
. Обратной стороной является то, что CronJobs
предназначены быть по расписанию объекты, это означает, что вам нужно начинать проектировать на объект, основанный на времени.
Учтите, что по замыслу Jobs
предназначены остаться после завершения чтобы сохранить данные, связанные с тем, что произошло, пока они обрабатывают данные. Также из v1.12, они также предназначены для самоудаления, а это означает, что включение этих шлюзов функций, вероятно, является наиболее простым способом добиться желаемого.
Чтобы дождаться, пока ресурс (например, развертывание, задание и т. Д.) выкатил, и все его объекты готовы, запускаем:
kubectl rollout status {Resource Type} {Resource name}
Например:
$ kubectl rollout status deployment my-app
Waiting for rollout to finish: 0 of 1 updated replicas are available...
Waiting for latest deployment config spec to be observed by the controller loop...
replication controller "my-app" successfully rolled out
Другой способ - ждать конкретную капсулу, по идентификатору, а еще лучше - по ярлыку. Например:
kubectl wait --for=condition=ready pod -l app=my-app
Обратите внимание, что если модуль был создан с kubectl run my-app ...
(а не с «создать развертывание») метка, вероятно, будет run=my-app