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
Другие вопросы по тегам