Antworten:
Es gibt keinen Befehl, genau das zu tun, was Sie gefragt haben.
Hier sind einige enge Übereinstimmungen.
Mit diesem Befehl können Sie alle Pods in einem einzigen Namespace löschen:
kubectl delete --all pods --namespace=foo
Sie können auch alle Bereitstellungen im Namespace löschen, wodurch alle Pods gelöscht werden, die mit den dem Namespace entsprechenden Bereitstellungen verknüpft sind
kubectl delete --all deployments --namespace=foo
Mit diesem Befehl können Sie alle Namespaces und jedes Objekt in jedem Namespace löschen (jedoch keine Objekte ohne Namespace wie Knoten und einige Ereignisse):
kubectl delete --all namespaces
Der letztere Befehl ist jedoch wahrscheinlich nicht das, was Sie tun möchten, da er Dinge im Namespace des Kubesystems löscht, wodurch Ihr Cluster nicht mehr verwendbar wird.
Dieser Befehl löscht alle Namespaces außer kube-system, was nützlich sein kann:
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-namespacesscheint manchmal zu funktionieren (nicht sicher, warum es in einigen Umgebungen und nicht in anderen funktioniert). Es funktioniert gut von meinem Bastion Host, aber nicht von Laptop. Beide laufen Debian und beide laufen die gleiche Version von Kubectl (Cluster-Version 1.13)
kube-systemNamespace. Im Nachrichtenbeispiel kann ich den defaultNamespace sehen. Wird kube-systemmit dem von Ihnen angehängten Befehl gelöscht?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
um sie auch lästige Replikations-Controller loszuwerden.
ingauch
Sie müssen nur Folgendes sedtun:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
Erklärt:
kubectl get pods --all-namespaces, um die Liste aller Pods in allen Namespaces abzurufen.--no-headers=trueOption, um die Überschriften auszublenden.sBefehl von sed, um die ersten beiden Wörter abzurufen, die jeweils repräsentieren, namespaceund setzen Sie pod's namedann den deleteBefehl mit ihnen zusammen.deleteBefehl lautet wie folgt :
kubectl --namespace kube-system delete pod heapster-eq3yw.eModifikator des sBefehls, um den oben zusammengestellten Befehl auszuführen, der die eigentlichen deleteArbeiten ausführt .Um das Löschen von Pods im kube-systemNamespace zu vermeiden , müssen Sie nur hinzufügen grep -v kube-system, um den kube-systemNamespace vor dem sedBefehl auszuschließen .
--all-namespaceslöschen , wenn Sie keine Pods im kube-systemNamespace löschen möchten
Sie können einfach laufen
kubectl delete all --all --all-namespaces
Der erste allbedeutet die gängigen Ressourcentypen (Pods, Replikatsätze, Bereitstellungen, ...)
kubectl get all == kubectl get pods,rs,deployments, ...Das zweite --allbedeutet, alle Ressourcen der ausgewählten Arten auszuwählen
Beachten Sie, dass allFolgendes nicht enthalten ist:
Um perfekt aufzuräumen,
Hier ist ein Einzeiler, der mit grep erweitert werden kann, um nach Namen zu filtern.
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
Wenn Sie bereits Pods haben, die neu erstellt werden, sollten Sie zuerst alle Bereitstellungen löschen
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Ersetzen Sie einfach den NAMSPACE und die DEPLOYMENT durch die entsprechenden. Sie können alle Bereitstellungsinformationen mit dem folgenden Befehl abrufen
kubectl get deployments --all-namespaces
Das Kubectl-Bulk-Plugin (Bulk-Action auf Krew) kann für Sie nützlich sein. Es bietet Ihnen Bulk-Operationen für ausgewählte Ressourcen. Dies ist der Befehl zum Löschen von Pods
' kubectl bulk pods -n namespace delete '
Sie könnten überprüfen Details in dieser
Ich erstelle einen Python-Code, um alle im Namespace zu löschen
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")
und dann
kubectl get all -n kong -o json | python delall.py
K8s arbeitet vollständig an der Grundlage des Namespace. Wenn Sie alle Ressourcen freigeben möchten, die sich auf den angegebenen Namespace beziehen.
Sie können die unten genannten verwenden:
kubectl Namespace löschen k8sdemo-app