Команда для удаления всех контейнеров во всех пространствах кубернетов

При взгляде на документ есть api-вызов для удаления модуля 'a', есть ли способ убить все контейнеры во всех пространствах имен?

Ответы

Ответ 1

Нет команды для выполнения именно того, что вы просили.

Вот несколько близких совпадений.

Вы можете удалить все контейнеры в одном пространстве имен с помощью этой команды:

kubectl delete --all pods --namespace=foo

Вы можете удалить все пространства имен и каждый объект в каждом пространстве имен (но не объекты, не содержащие имен, например узлы и некоторые события) с помощью этой команды:

kubectl delete --all namespaces

Однако последняя команда, вероятно, не то, что вы хотите сделать, поскольку она удалит вещи в пространстве имен kube-system, что сделает ваш кластер непригодным для использования.

Эта команда удалит все пространства имен, кроме kube-system, которые могут быть полезны:

for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
  kubectl delete ns $each
done

Ответ 2

kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all

избавиться от них надоедливые контроллеры репликации тоже.

Ответ 3

Вам просто нужно sed сделать это:

kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'

Объясняет:

  • используйте команду kubectl get pods --all-namespaces, чтобы получить список всех контейнеров во всех пространствах имен.
  • используйте --no-headers=true, чтобы скрыть заголовки.
  • используйте s команду sed для извлечения первых двух слов, которые представляют namespace и pod name соответственно, затем с помощью команды delete используйте их.
  • окончательная команда delete выглядит так: kubectl --namespace kube-system delete pod heapster-eq3yw.
  • используйте модификатор e команды s для выполнения команды, собранной выше, которая будет работать с фактическим delete.

Чтобы избежать удаления модулей в пространстве имен kube-system, просто добавьте grep -v kube-system, чтобы исключить пространство имен kube-system перед командой sed.

Ответ 4

Вот однострочник, который можно расширить с помощью grep для фильтрации по имени.

kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}

Ответ 5

kubectl delete pods --all

Это удалит все стручки везде.

То же самое работает для служб, развертываний, конфигурационных карт и заданий.

Ответ 6

Если у вас уже есть воссозданные модули, подумайте сначала об удалении всех развертываний.

kubectl delete -n *NAMESPACE deployment *DEPLOYMENT

Просто замените NAMSPACE и DEPLOYMENT на соответствующие, вы можете получить информацию обо всех развертываниях с помощью следующей команды

kubectl get deployments --all-namespaces

Ответ 7

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

 ' kubectl bulk pods -n namespace delete '

Вы можете проверить детали в этом

Ответ 8

Я создаю код Python, чтобы удалить все в пространстве имен

delall.py

import json,sys,os;

obj=json.load(sys.stdin);
for item in obj["items"]:
        os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")

а затем

kubectl get all -n kong -o json | python delall.py