Команда для удаления всех контейнеров во всех пространствах кубернетов
При взгляде на документ есть 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