Kubernetes - удалить все вакансии оптом

Я могу удалить все рабочие места внутри запущенного кастера

kubectl delete jobs --all 

Тем не менее, задания удаляются одна за другой, что довольно медленно (примерно на 200 заданий у меня было время написать этот вопрос, а этого даже не было сделано).

Есть ли более быстрый подход?

Ответ 1

У меня есть скрипт для удаления, который был намного быстрее при удалении:

$ cat deljobs.sh 
set -x

for j in $(kubectl get jobs -o custom-columns=:.metadata.name)
do
    kubectl delete jobs $j &
done

А для создания 200 заданий используется следующий скрипт с командой for я in {1..200}; do./jobs.sh; done for я in {1..200}; do./jobs.sh; done

$ cat jobs.sh 
kubectl run memhog-$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 8 | head -n 1)  --restart=OnFailure --record --image=derekwaynecarr/memhog --command -- memhog -r100 20m

Ответ 2

Если вы используете CronJob и они быстро накапливаются, вы можете позволить kubernetes автоматически удалять их, настроив предел истории заданий, описанный в документации. Это действительно, начиная с версии 1.6.

...
  spec:
    ...
    successfulJobsHistoryLimit: 3
    failedJobsHistoryLimit: 3

Ответ 3

Немного легче настроить псевдоним для этой команды bash:

kubectl delete jobs 'kubectl get jobs -o custom-columns=:.metadata.name'

Ответ 4

Я использую этот скрипт быстро, но он может уничтожить CPU (процесс на одно задание), вы всегда можете настроить параметр sleep:

#!/usr/bin/env bash

echo "Deleting all jobs (in parallel - it can trash CPU)"

kubectl get jobs --all-namespaces | sed '1d' | awk '{ print $2, "--namespace", $1 }' | while read line; do
  echo "Running with: ${line}"
  kubectl delete jobs ${line} &
  sleep 0.05
done

Ответ 5

Распараллелить, используя параллельный GNU

parallel --jobs=5 "echo {}; kubectl delete jobs {} -n core-services;" ::: $(kubectl get job -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}'  -n core-services)

Ответ 6

Вероятно, нет другого способа удалить всю работу сразу, потому что даже kubectl delete jobs также запрашивают одно задание за раз, что предлагает Норберт ван Ноблен, может получить более быстрый результат, но это будет иметь большое значение.

Ответ 8

Плагин Kubectl Bulk (массовое действие на Krew) может быть полезен для вас, он дает вам массовые операции на выбранных ресурсах. Это команда для удаления заданий 'kubectl массовые задания удаления'

Вы можете проверить детали в https://github.com/emreodabas/kubectl-plugins/blob/master/README.md#kubectl-bulk-aka-bulk-action

Ответ 9

Это работает очень хорошо для меня:

kubectl delete jobs $(kubectl get jobs -o custom-columns=:.metadata.name)