Ответы:
Там нет команды, чтобы сделать именно то, что вы просили.
Вот несколько близких матчей.
Вы можете удалить все модули в одном пространстве имен с помощью этой команды:
kubectl delete --all pods --namespace=foo
Вы также можете удалить все развертывания в пространстве имен, что приведет к удалению всех модулей, связанных с развертываниями, соответствующими пространству имен.
kubectl delete --all deployments --namespace=foo
Вы можете удалить все пространства имен и каждый объект в каждом пространстве имен (но не объекты без пространства имен, такие как узлы и некоторые события) с помощью этой команды:
kubectl delete --all namespaces
Однако, последняя команда, вероятно, не то, что вы хотите сделать, поскольку она удалит вещи в пространстве имен системы kube, что сделает ваш кластер непригодным для использования.
Эта команда удалит все пространства имен, кроме kube-system, что может быть полезно:
for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
kubectl delete ns $each
done
kubectl delete pods --all --all-namespaces
Кажется, иногда работает (не уверен, что заставляет его работать в некоторых средах, а не в других). Это хорошо работает с моего хоста бастион, но не с ноутбука. Оба работают под управлением Debian и работают с одной и той же версией kubectl (кластерная версия 1.13)
kube-system
пространстве имен. В примере сообщения я вижу default
пространство имен. Является ли kube-system
удалить команду вы прикрепленная?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
избавиться от них надоедливые контроллеры репликации тоже.
ing
также не можете удалить
Вам просто нужно 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's name
соответственно, затем собратьdelete
команду, используя их.delete
команда так же , как:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
модификатор s
команды, чтобы выполнить команду, собранную выше, которая выполнит фактические delete
работы.Чтобы избежать удаления модулей в kube-system
пространстве имен, просто необходимо добавить grep -v kube-system
исключающее kube-system
пространство имен перед sed
командой.
--all-namespaces
если вы не хотите удалять kube-system
Вы можете просто запустить
kubectl delete all --all --all-namespaces
Первый all
означает общие виды ресурсов (модули, наборы реплик, развертывания, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
Второе --all
означает выбрать все ресурсы выбранных видов.
Обратите внимание, что all
не включает в себя:
Для того, чтобы очистить идеально,
Вот однострочник, который можно расширить с помощью grep для фильтрации по имени.
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
Если у вас уже есть воссозданные модули, сначала подумайте об удалении всех развертываний.
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Просто замените NAMSPACE и DEPLOYMENT на соответствующие, вы можете получить информацию обо всех развертываниях с помощью следующей команды
kubectl get deployments --all-namespaces
Плагин Kubectl Bulk (массовое действие на Krew) может быть полезен для вас, он дает вам массовые операции на выбранных ресурсах. Это команда для удаления стручков
' kubectl bulk pods -n namespace delete '
Вы можете проверить детали в этом
Я создаю код 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
K8s полностью работает на фундаментальном пространстве имен. если вы хотите освободить все ресурсы, связанные с указанным пространством имен.
Вы можете использовать нижеуказанные:
kubectl удалить пространство имен k8sdemo-app