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-namespaces
scheint 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-system
Namespace. Im Nachrichtenbeispiel kann ich den default
Namespace sehen. Wird kube-system
mit 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.
ing
auch
Sie müssen nur Folgendes sed
tun:
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=true
Option, um die Überschriften auszublenden.s
Befehl von sed
, um die ersten beiden Wörter abzurufen, die jeweils repräsentieren, namespace
und setzen Sie pod's name
dann den delete
Befehl mit ihnen zusammen.delete
Befehl lautet wie folgt :
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
Modifikator des s
Befehls, um den oben zusammengestellten Befehl auszuführen, der die eigentlichen delete
Arbeiten ausführt .Um das Löschen von Pods im kube-system
Namespace zu vermeiden , müssen Sie nur hinzufügen grep -v kube-system
, um den kube-system
Namespace vor dem sed
Befehl auszuschließen .
--all-namespaces
löschen , wenn Sie keine Pods im kube-system
Namespace löschen möchten
Sie können einfach laufen
kubectl delete all --all --all-namespaces
Der erste all
bedeutet die gängigen Ressourcentypen (Pods, Replikatsätze, Bereitstellungen, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
Das zweite --all
bedeutet, alle Ressourcen der ausgewählten Arten auszuwählen
Beachten Sie, dass all
Folgendes 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