kubectl список / удалить все выполненные работы
Я ищу команду kubectl, чтобы перечислить / удалить все выполненные работы
Я попробовал:
kubectl get job --field-selector status.succeeded=1
Но я получаю:
enfield selector "status.succeeded=1": field label "status.succeeded" not supported for batchv1.Jobter code here
Каковы возможные поля для --fieldSelector при получении работы?
Есть лучший способ сделать это?
5 ответов
Что вы можете сделать, чтобы получить список всех успешных заданий: сначала получить все задания, а затем отфильтровать вывод:
kubectl get job --all-namespaces | grep "succeeded"
Если вы хотите удалить все последующие задания, вы можете использовать следующую команду:
kubectl delete job $(kubectl get job -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
Вы почти у цели, вы можете сделать ниже, чтобы удалить выполненные задания
kubectl delete jobs --field-selector status.successful=1
FWIW следующее возвращает все неудачные задания:
kubectl get jobs $(kubectl get jobs -o=jsonpath='{.items[?(@.status.failed>0)].metadata.name}')
И все рабочие места, которые еще выполняются:
kubectl get jobs $(kubectl get jobs -o=jsonpath='{.items[?(@.status.active==1)].metadata.name}')
Более элегантная и короткая версия:
kubectl delete pod --field-selector=status.phase==Succeeded
Поддерживаемые селекторы полей зависят от типа ресурса Kubernetes. См. https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/.
Все типы ресурсов поддерживают metadata.name
а также metadata.namespace
поля. --field-selector
не поддерживается для Job
для поля status
, Попробуй использовать --selector
:
$ kubectl get jobs --selector status.succeeded!=0
NAME DESIRED SUCCESSFUL AGE
example-job 1 1 34m