Відповіді:
Немає команди робити саме те, про що ви просили.
Ось кілька близьких матчів.
Ви можете видалити всі стручки в одному просторі імен за допомогою цієї команди:
kubectl delete --all pods --namespace=foo
Ви також можете видалити всі розгортання в просторі імен, які видалять усі стручки, додані до розгортань, що відповідають простору імен
kubectl delete --all deployments --namespace=foo
За допомогою цієї команди можна видалити всі простори імен та кожен об'єкт у кожному просторі імен (але не об'єкти, що не мають імен, наприклад, вузли та деякі події):
kubectl delete --all namespaces
Однак остання команда, ймовірно, не є тим, що ви хочете робити, оскільки вона видалить речі з простору імен kube-системи, що зробить ваш кластер непридатним для використання.
Ця команда видалить усі простори імен, крім kube-системи, що може бути корисно:
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
не включає:
Для того, щоб очистити ідеально,
Ось один вкладиш, який можна розширити грепом, щоб фільтрувати за назвою.
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 та ЗАВДАННЯ на відповідні, ви можете отримати всю інформацію про розгортання за допомогою наступної команди
kubectl get deployments --all-namespaces
Плагін Kubectl bulk (bulk-action on 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-додаток